DB Navigator問題 |
尚未結案
|
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
|
xiaoning79627
初階會員 發表:46 回覆:60 積分:26 註冊:2002-11-10 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! 請將如下程式寫在DataSource元件的OnStateChange事件中:
procedure TForm1.DataSource1StateChange(Sender: TObject); begin if DataSource1.DataSet.State in [dsEdit, dsInsert] then DBNavigator1.Enabled := False else DBNavigator1.Enabled := True; end;不過, 這樣做也是有缺點存在, 就是當使用者點擊DBNavigator元件的dsEdit按鈕或dsInsert按鈕時(即DataSet處于修改或新增狀態)時, DBNavigator元件上所有的按鈕都會不能使用. 解決的方法, 您可參考以下幾種: 一. 在Form上另外再加兩個Button元件, 作用分別為Post(存檔)和Cancel(取消), 然后在DBNavigator元件的VisibleButtons屬性中, 將dsPost按鈕和dsCancel按鈕的屬性值設定為False, 將以上的程式碼修改成如下: procedure TForm1.DataSource1StateChange(Sender: TObject); begin if DataSource1.DataSet.State in [dsEdit, dsInsert] then begin DBNavigator1.Enabled := False; ButtonPost.Enable := True; ButtonCancel.Enable := True; end else begin DBNavigator1.Enabled := True; ButtonPost.Enable := False; ButtonCancel.Enable := False; end; end;利用如上的方法, 就可以實現您需要的目的了. 二. 在Form中使用兩個DBNavigator元件, DBNavigator1元件的VisibleButtons的屬性設定中, [nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbEdit,nbRefresh]屬性值為True, 其它的為False; DBNavigator2元件的VisibleButtons的屬性設定中, [nbPost,nbCancel]屬性值為True, 其它為False, 調整兩個DBNavigator元件的大小和位置, 使其外觀看起來像一個DBNavigator元件, 然后, 將兩個DBNavigator元件的DataSource屬性設定為同一個DataSource元件, 并在DataSource元件的OnStateChange事件中寫入如下程式碼: procedure TForm1.DataSource1StateChange(Sender: TObject); begin if DataSource1.DataSet.State in [dsEdit, dsInsert] then begin DBNavigator1.Enabled := False; DBNavigator2.Enabled := True; end else begin DBNavigator1.Enabled := True; DBNavigator2.Enabled := False; end; end;三.您也可以自訂按鈕, 以達到您的要求, 小弟以前有發表過相關的文章, 請參考如下連接: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29249 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |