关于用Delphi开发的一些基本的套路。
1.源文件,Dcu文件和最后的编译好的程序放在不同的目录
2.窗体单元都用WinXXXX的方式命名,Win做为前缀,窗体类都用Tfrm_XXXX的方式命名,Tfrm_做为前缀
3.窗体字体都设置成宋体,小五
4.使用一个 TDataModule 来放一些公用的控件,如 TImageList,不要在每个窗体都放TImageList整个程序
用一个就可以了,否则会造成图片重复,编译后的程序变大,TImageList如果放置的是16*16的图标,则命名为
img_1616。
5.TDataModule 一般命名为 DMApp,做为系统中主要的一个公用单元。放置一些TADOConnection ADOQuery等非可初控件。
6.所有的按钮事件都使用 TActionList 如有用户添加,用户删除的功能,创建 act_UserAdd,act_UserDelete这些对应的 TAction。引用
DMApp单元的 img_1616给每个 TAction 设置图标。
7.按钮功能,右键菜单,工具栏都指定自己的 Action属性。
8.如果某个地方需要指定调用一个功能,如要调用刷新,来重新显示用户清单,则用act_UserRefresh.Execute;的方式来调用,不要调用
某个按钮的 btn_UserRefresh.Click。
9.调整工程的dpr工程文件,让 DMApp单元先加载,dpr工程文件中除去DMApp单元和主窗体外,其它的窗体创建代码全部删除掉。也可以通
过 Project->Options->Forms 来进行调整。
10.如果有其它子窗体,如有子窗体A来完成用户编辑的功能,单元文件是 WinUserEdit,窗体类是 Tfrm_UserEdit。如果窗体是要
ShowModal 使用,则将系统生成的var frm_UserEdit: Tfrm_UserEdit; 删除。给Tfrm_UserEdit添加类方法
class function CreateWinUserEdit(User:TUser):Boolean;实现代码如下
class function Tfrm_UserEdit.CreateWinUserEdit(User:TUser):Boolean;
var
form:Tfrm_UserEdit;
begin
Result:=False;
form:=Tfrm_UserEdit.Create(Application);
form.SetUserInfo(User);
form.ShowModal;
Result:=mrOK=form.ModalResult;
end;
其它创建想创建 Tfrm_UserEdit 窗体时使用 Tfrm_UserEdit.CreateWinUserEdit(User);的方法,根据返回值做下一步的操作。
11.如果子窗体是 Show的方式打开,并且不能重复打开,则将系统生成的var frm_UserEdit: Tfrm_UserEdit; 放到implementation 下面
。给Tfrm_UserEdit添加类方法
class function CreateWinUserEdit(User:TUser):Boolean;实现代码如下
implementation
var
frm_UserEdit: Tfrm_UserEdit;
class function Tfrm_UserEdit.CreateWinUserEdit(User:TUser):Boolean;
begin
Result:=False;
if Not Assigned(frm_UserEdit) then
frm_UserEdit:=Tfrm_UserEdit.Create(Application);
frm_UserEdit.SetUserInfo(User);
form.Show;
end;
procedure Tfrm_UserEdit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
frm_UserEdit:=nil;
end;
12.关于数据库操作,将TADOConnection 放在DMApp单元中。如要返回用户列表,在DMApp单元中实现
function DMApp.DBGetUserList(AList:TList):Integer;
begin
执行SQL,返回生成User放到 AList对象中,返回总的个数。
end;
如果想要使用数据库绑定,则在DMApp单元放置一个ADOQ_User:TADOQuery;实现
function DMApp.DBGetUserList:TADOQuery;
begin
执行SQL,返回数据集。
end;
使用的原则是:将和界面无关的功能放在 DMApp单元中,这样可以整个程序都共享,实现一些方法来封装数据库的操作,不要在
窗体单元中写的到处都是SQL语句。
13.要想程序不出错,那就不要将所有的代码分在一起,就象工厂不能所有人都在一个房间里干活一样,分层次,分类,代码结构清晰了
就不容易出错。设计就是从不同角度分类,分组,最后得到一个最好的组织方式。不要因为窗体少,就感觉能随便写,一个良好的习惯和套路让你不会过多的时间纠缠于解决一些基本的错误。结构清晰的你才能想得明白。
1.源文件,Dcu文件和最后的编译好的程序放在不同的目录
2.窗体单元都用WinXXXX的方式命名,Win做为前缀,窗体类都用Tfrm_XXXX的方式命名,Tfrm_做为前缀
3.窗体字体都设置成宋体,小五
4.使用一个 TDataModule 来放一些公用的控件,如 TImageList,不要在每个窗体都放TImageList整个程序
用一个就可以了,否则会造成图片重复,编译后的程序变大,TImageList如果放置的是16*16的图标,则命名为
img_1616。
5.TDataModule 一般命名为 DMApp,做为系统中主要的一个公用单元。放置一些TADOConnection ADOQuery等非可初控件。
6.所有的按钮事件都使用 TActionList 如有用户添加,用户删除的功能,创建 act_UserAdd,act_UserDelete这些对应的 TAction。引用
DMApp单元的 img_1616给每个 TAction 设置图标。
7.按钮功能,右键菜单,工具栏都指定自己的 Action属性。
8.如果某个地方需要指定调用一个功能,如要调用刷新,来重新显示用户清单,则用act_UserRefresh.Execute;的方式来调用,不要调用
某个按钮的 btn_UserRefresh.Click。
9.调整工程的dpr工程文件,让 DMApp单元先加载,dpr工程文件中除去DMApp单元和主窗体外,其它的窗体创建代码全部删除掉。也可以通
过 Project->Options->Forms 来进行调整。
10.如果有其它子窗体,如有子窗体A来完成用户编辑的功能,单元文件是 WinUserEdit,窗体类是 Tfrm_UserEdit。如果窗体是要
ShowModal 使用,则将系统生成的var frm_UserEdit: Tfrm_UserEdit; 删除。给Tfrm_UserEdit添加类方法
class function CreateWinUserEdit(User:TUser):Boolean;实现代码如下
class function Tfrm_UserEdit.CreateWinUserEdit(User:TUser):Boolean;
var
form:Tfrm_UserEdit;
begin
Result:=False;
form:=Tfrm_UserEdit.Create(Application);
form.SetUserInfo(User);
form.ShowModal;
Result:=mrOK=form.ModalResult;
end;
其它创建想创建 Tfrm_UserEdit 窗体时使用 Tfrm_UserEdit.CreateWinUserEdit(User);的方法,根据返回值做下一步的操作。
11.如果子窗体是 Show的方式打开,并且不能重复打开,则将系统生成的var frm_UserEdit: Tfrm_UserEdit; 放到implementation 下面
。给Tfrm_UserEdit添加类方法
class function CreateWinUserEdit(User:TUser):Boolean;实现代码如下
implementation
var
frm_UserEdit: Tfrm_UserEdit;
class function Tfrm_UserEdit.CreateWinUserEdit(User:TUser):Boolean;
begin
Result:=False;
if Not Assigned(frm_UserEdit) then
frm_UserEdit:=Tfrm_UserEdit.Create(Application);
frm_UserEdit.SetUserInfo(User);
form.Show;
end;
procedure Tfrm_UserEdit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
frm_UserEdit:=nil;
end;
12.关于数据库操作,将TADOConnection 放在DMApp单元中。如要返回用户列表,在DMApp单元中实现
function DMApp.DBGetUserList(AList:TList):Integer;
begin
执行SQL,返回生成User放到 AList对象中,返回总的个数。
end;
如果想要使用数据库绑定,则在DMApp单元放置一个ADOQ_User:TADOQuery;实现
function DMApp.DBGetUserList:TADOQuery;
begin
执行SQL,返回数据集。
end;
使用的原则是:将和界面无关的功能放在 DMApp单元中,这样可以整个程序都共享,实现一些方法来封装数据库的操作,不要在
窗体单元中写的到处都是SQL语句。
13.要想程序不出错,那就不要将所有的代码分在一起,就象工厂不能所有人都在一个房间里干活一样,分层次,分类,代码结构清晰了
就不容易出错。设计就是从不同角度分类,分组,最后得到一个最好的组织方式。不要因为窗体少,就感觉能随便写,一个良好的习惯和套路让你不会过多的时间纠缠于解决一些基本的错误。结构清晰的你才能想得明白。
本文提供了一套使用Delphi进行软件开发的最佳实践,包括文件管理、界面设计、数据库操作等方面的具体建议,有助于提升代码质量和程序稳定性。
5517

被折叠的 条评论
为什么被折叠?



