Table1.Edit;
Table1.SetRecord(,,, 9600000, 1200000000); // 依欄位順序傳值,空白表保持原值
Table1.Post;
需先 Edit 進入編輯狀態,欄位值須與實體欄位順序、型別對應,最後 Post 寫回。
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,否則每次 Next 都觸發 UI 重繪,效能呈指數級下降。