在我的應用程序,有掛鉤,像這樣,這些數據組件:在ADOQuery中當前記錄發生更改之前會觸發哪個事件,以及如何不更改當前記錄?
DBGrid > (DataSource > ADOQuery > ADOConnection)
DBNavigator > (DataSource > ADOQuery > ADOConnection)
每當用戶從DBGrid中選擇不同行,或者使用的DBNavigator時,ADOQuery的當前記錄的變化。很好,但是當用戶對當前記錄進行一些更改,然後導航離開它時,所做的更改將會丟失。
我想顯示一個確認對話框,其中用戶需要確認從當前記錄導航,以防有任何更改。而且,當用戶點擊「否」時,我希望應用程序不要更改當前記錄。
我應該在哪裏插入代碼?在用戶導航離開當前記錄之前觸發了哪個事件,以及如何停止該操作繼續?
if anythingChanged then
if messageDlg(...)=mrNo then
ADOQuery.dontChangeCurrentRecord;
WOO-HOO!在等待這個答案的33分鐘內,我設法發現它是我需要搗鼓的BeforeScroll事件,但我不知道無聲的中止技巧: - $謝謝! – 2010-01-18 13:13:14
請注意,BeforeScroll並未涵蓋所有情況(如某人關閉數據集或僅刷新數據集)。我曾經寫過一個TRecordArrivedNotifier(基於TDataLinkReflector),當你到達一個新記錄時觸發一個事件。你可以用它作爲基礎來觸發「中止」。請參閱我的演講「智能代碼與數據庫和數據感知控件」:http://wiert.wordpress.com/conferences-seminars-and-other-public-appearances/ – 2010-01-18 16:19:42