控制自訂DBNavigator的使用限制 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
有朋友問及有關如主題之範例﹐小弟建議朋友來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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |