• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
delphi的VCL就是面向对象的,因此我无论我们是使用她来开发数据库的管理信息系统,还是网络应用,都可以说是面向对象,虽然可能很多人都像我当初一样,不知道什么时面向对象,如何使用面向对象来编程。在这里我不用理论来说明什么是面积对象,我们将面向对象编程的思想应用到我们的程序开发中,边实践边理解。
首先创建一个窗体,放入ActionList1控件,命名为actlstChild,放入ImageList1,命名为actlstChildImageList,再设置一些基本的属性,如:FormStyle为fsMDIChild,窗体最大化等。此窗体用于将来其它窗体的基窗体。当操作主窗体中的一些功能时需要关联到基窗体上。因此窗体创建的时候要将主窗体的操作事件全部赋值到基窗体。为了让界面和代码分离,我们需要创建一个类(单元文件),专门用于基窗体上的一些操作。新建单元文件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+'出错数类名:'+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('修改数据操作',0)
end;

end.

此时将基窗体的事件关联起来,基窗体的主要功能代码如下:
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;

基本的功能做完后,下一步就可以创建一个新窗体并继承此窗体。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab设置随机数种子方法 - vincenzo.lai发布时间:2022-07-18
下一篇:
MATLAB与C语言对比实例:随机数生成发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap