線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1491
推到 Plurk!
推到 Facebook!

控制自訂DBNavigator的使用限制

 
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-23 12:42:28 IP:63.84.xxx.xxx 未訂閱
有朋友問及有關如主題之範例﹐小弟建議朋友來K.Top查找﹐但朋友回應說一直沒有找到﹐故小弟將有關此主題的個人作法Post﹐請各位前輩指正﹐請各位同仁共勉之﹒ Delphi中的TDBNavigator元件固然好用﹐但總覺得缺少一些親和力﹐辟如說沒有圖例的顯示等等﹐所以許多同仁會選擇自訂有個人特色的DBNavigator﹐一般的作法都會選擇Additional元件盤中的TspeedButton元件來作此按鈕﹐但其中涉及到一個問題﹐就是如何控制自訂DBNavigator的使用限制﹐辟如當TDataSet的狀態為新增或修改時﹐如果還沒有Post或Cancel﹐我們不允許它作移動記錄﹑刪除記錄等作業﹐當TDataSet的狀態不是在瀏覽時﹐我們也不允許它作資料刪除的作業﹒故在此我們就必須自訂一個名為Set的程式﹐以作此用﹒程式碼如下﹕ Private {Private declarations} Procedure Set; //為自訂的程式作宣告 Public {Public declarations} end; var Form1.Tform1; implementation {$R*.dfm} ProcedureTform1.Set; //自訂的程式內容 begin sbFirst.Enabled:=(DataSource1.DataSet.State=dsBrowse) and (not DataSource1.DataSet.Bof); //此處選擇使用DataSource1.DataSet 而不直接使用Table或Query是為了 //方便以后更換資料集元件﹒若以前編譯程式碼時是使用Ttable元件﹐現 //在要換成Tquery元件﹐只需要將資料集元件修改即可﹐而不需要更改此 //處的程式碼﹐提升程式碼的可攜性 sbPrior.Enabled:=(DataSource1.DataSet.State=dsBrowse) and (not DataSource1.DataSet.Bof); sbNext.Enabled:=(DataSource1.DataSet.State=dsBrowse) and (not DataSource1.DataSet.Eof); sbLast.Enabled:=(DataSource1.DataSet.State=dsBrowse) and (not DataSource1.DataSet.Eof); sbInsert.Enabled:=(DataSource1.DataSet.State=dsBrowse); sbDelete.Enabled:=(DataSource1.DataSet.State=dsBrowse) and ((not DataSource1.DataSet.Bof) or (not DataSource1.DataSet.Eof)); sbEdit.Enabled:=(DataSource1.DataSet.State=dsBrowse) and ((not DataSource1.DataSet.Bof) or (not DataSource1.DataSet.Eof)); sbPost.Enabled:=(DataSource1.State in [dsInsert, dsEdit]); sbCancel.Enabled:=(DataSource1.State in [dsInsert, dsEdit]); sbRefresh.Enabled:=(DataSource1.DataSet.State=dsBrowse); end; 將以上的程式碼加在Table的AfterScroll事件和DataSource的OnStateChange 事件中即可﹐例如﹕ ProcedureTform1.DataSource1StateChange(Sender:Tobject); begin Set; end; ProcedureTform1.Table1AfterScrool(DataSet:TDataSet); begin Set; end; 注﹕小弟也是新手﹐請各位前輩多多指正﹐感激不盡﹒ 忻晟 發表人 - cashxin2002 於 2003/04/23 12:49:54 發表人 - cashxin2002 於 2003/04/23 12:51:26
------
忻晟
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-23 12:48:05 IP:211.23.xxx.xxx 未訂閱
建議你用 acionlist 元件,配合TspeedButton的acive屬性就可以了,不必寫那麼一大堆程式碼。 -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
系統時間:2024-07-01 13:25:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!