首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 資料集進階方法:SetRecords、Abort、書籤導航與 DisableControls 效能優化

     編輯:Delphi

15.3 進階資料操作與導航技巧

SetRecords:批次修改當前記錄多欄位

Table1.Edit;
Table1.SetRecord(,,, 9600000, 1200000000);  // 依欄位順序傳值,空白表保持原值
Table1.Post;

需先 Edit 進入編輯狀態,欄位值須與實體欄位順序、型別對應,最後 Post 寫回。

Abort:取消正在進行的操作

procedure TForm1.Table1BeforeDelete(DataSet: TDataSet);
begin
  if MessageDlg('真的要刪除記錄嗎?', mtConfirmation, [mbYes, mbNo, mbCancel], 0) <> mrYes then
    Abort;  // 取消刪除
end;

適用於 BeforeDelete/BeforePost/BeforeInsert 等前置事件,攔截使用者確認流程。

書籤:快速定位與恢復記錄指標

var Bookmark: TBookMark;
begin
  Bookmark := Table1.GetBookMark;   // 1. 標記目前位置
  Table1.DisableControls;           // 2. 切斷視覺元件更新(加速)
  Table1.First;
  while not Table1.EOF do
  begin
    // 批次處理全表...
    Table1.Next;
  end;
  Table1.GotoBookMark(Bookmark);    // 3. 瞬間回原位
  Table1.EnableControls;           // 4. 恢復視覺綁定
  Table1.FreeBookMark(Bookmark);    // 5. 釋放書籤資源
end;

三方法必成對使用:GetBookMark→GotoBookMark→FreeBookMark。

DisableControls/EnableControls/Refresh:批次處理效能關鍵

  • DisableControls:切斷資料集與所有視覺元件連結,停止重繪閃爍,大幅加速遍歷/批次更新
  • EnableControls:恢復連結與顯示
  • Refresh:強制視覺元件重讀資料集當前記錄重繪

黃金法則:任何全表掃描、批次修改迴圈,務必包裹 DisableControls/EnableControls,否則每次 Next 都觸發 UI 重繪,效能呈指數級下降。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved