delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类
首先創(chuàng)建一個窗體,放入ActionList1控件,命名為actlstChild,放入ImageList1,命名為actlstChildImageList,再設(shè)置一些基本的屬性,如:FormStyle為fsMDIChild,窗體最大化等。此窗體用于將來其它窗體的基窗體。當(dāng)操作主窗體中的一些功能時需要關(guān)聯(lián)到基窗體上。因此窗體創(chuàng)建的時候要將主窗體的操作事件全部賦值到基窗體。為了讓界面和代碼分離,我們需要創(chuàng)建一個類(單元文件),專門用于基窗體上的一些操作。新建單元文件untBaseClass.pas,代碼如下:
unit untBaseClass;
interface
uses
? Windows,Messages,SysUtils,Variants,Classes,DB,ADODB;
type
? TBaseClass = class
? private
? public
??? constructor create;
??? destructor Destroy;override;
??? procedure AddData;
??? procedure CancelData;
??? procedure SaveData;
??? procedure DeleteData;
??? procedure ModifyData;
? end;
implementation
uses untDM, untGlobal, untMain, untBase;
constructor TBaseClass.create;
begin
end;
destructor TBaseClass.Destroy;
begin
? inherited;
end;
procedure TBaseClass.AddData;
begin
? With frmDM do
? if Assigned(dsMaster.DataSet) then
??? if? not(dsMaster.State in [dsEdit,dsInsert]) then
??? begin
????? try
??????? (dsMaster.DataSet as TADOQuery).Append;
????? Except
??????? on E:exception do
????????? MsgBox('增加錯誤!'+#13+'出錯數(shù)類名:'+E.ClassName+#13+'出錯信息:'+E.Message,0);
????? end;
??? end;
end;
procedure TBaseClass.CancelData;
begin
? MsgBox('取消操作',0)
end;
procedure TBaseClass.DeleteData;
begin
end;
procedure TBaseClass.SaveData;
begin
? With frmDM do
? if Assigned(dsMaster.DataSet) then
??? if? dsMaster.State in [dsEdit,dsInsert] then
??? begin
????? try
??????? conDB.BeginTrans;
??????? (dsMaster.DataSet as TADOQuery).Post;
??????? (dsMaster.DataSet as TADOQuery).UpdateBatch;
??????? conDB.CommitTrans;
????? Except
??????? conDB.RollbackTrans;
??????? Raise exception.Create('增加錯誤!'
????? end;
??? end;
end;
procedure TBaseClass.ModifyData;
begin
? MsgBox('修改數(shù)據(jù)操作',0)
end;
end.
此時將基窗體的事件關(guān)聯(lián)起來,基窗體的主要功能代碼如下:
procedure TfrmBase.FormCreate(Sender: TObject);
begin
? objBaseClass:=TBaseClass.create;
? RelationMainFormEvent;
end;
procedure TfrmBase.FormClose(Sender: TObject; var Action: TCloseAction);
begin
? Action:=caFree;
? Self:=nil;
end;
procedure TfrmBase.RelationMainFormEvent;
begin
??? frmMain.actAdd.OnExecute:=actAdd.OnExecute;
??? frmMain.actAdd.Enabled:=True;
??? frmMain.actModify.OnExecute:=actModify.OnExecute;
??? frmMain.actModify.Enabled:=True;
??? frmMain.actSave.OnExecute:=actSave.OnExecute;
??? frmMain.actSave.Enabled:=true;
end;
procedure TfrmBase.actAddExecute(Sender: TObject);
begin
? objBaseClass.AddData;
end;
procedure TfrmBase.actDeleteExecute(Sender: TObject);
begin
? objBaseClass.DeleteData;
end;
procedure TfrmBase.actSaveExecute(Sender: TObject);
begin
? objBaseClass.SaveData;
end;
procedure TfrmBase.actCancelExecute(Sender: TObject);
begin
? objBaseClass.CancelData;
end;
procedure TfrmBase.actModifyExecute(Sender: TObject);
begin
? objBaseClass.ModifyData;
end;
基本的功能做完后,下一步就可以創(chuàng)建一個新窗體并繼承此窗體。
轉(zhuǎn)載于:https://www.cnblogs.com/DelphiFan/archive/2008/02/05/1645610.html
總結(jié)
以上是生活随笔為你收集整理的delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ADO的几种数据库连接方式
- 下一篇: 南雄风味 南雄小吃