表單上有個 stringgrid表格,關閉前提醒保存資料。
目前我設定了一個全域變數記錄是否保存,true為已保存, false未保存
表單創建時變數初始化力true,未按保存按鈕前的所有操作置為 false,按下保存按鈕
恢復為true。
現在問題來了,要是經過增加洗掉修改等等一系列操作后內容卻沒變化,但這時變數
也標記為 false了,求大神幫忙!!!
剛注冊,只有50分,多包涵
uj5u.com熱心網友回復:
//在OnClose事件中執行以下代碼:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if IsModified then //IsModified就是你說的全域變數
begin
Action := caNone;
ShowMessage('資料已修改,請先保存資料');
end;
end;
uj5u.com熱心網友回復:
你這個沒法判斷內容有沒有改變。我要是增加一條記錄,又把它洗掉了,操作后的內容和初始時或上一次保存后的內容相同,這時沒有保存就關閉的話應該不用提醒保存。
我只想到一個土辦法,就是關閉前和最后一次按保存按鈕后的資料進行比對,相同就直接關閉,不一樣就提醒保存,不過這樣資料一多關個程式要半天

uj5u.com熱心網友回復:
只有編輯過,不管是否跟原來一樣,都保存一下,這樣有什么問題?uj5u.com熱心網友回復:
關鍵就是要是資料不變化不想提醒啊
uj5u.com熱心網友回復:
每次增改刪操作時都判斷一下是否有變化。uj5u.com熱心網友回復:
沒必要弄這么復雜,發生了修改操作就提醒,把showmessage改為是/否的選擇對話框,讓用戶自己判斷是否需要保存。uj5u.com熱心網友回復:
樓主太軸,你在word中打開一個檔案,改一個字,再改回去,關閉,看word是否提示你需要保存?
uj5u.com熱心網友回復:
就是這么軸
。我還真的用了土辦法,新建了2個stringlist,分別獲取本地txt和stringgrid中資料進行比對,試過了,滾鍵盤滾了七八十條記錄,幾乎沒延遲,反正資料不會多到哪里去
uj5u.com熱心網友回復:
1樓正解!!!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/22544.html
標籤:語言基礎/算法/系統設計
