做数据库的程序,除了一些特殊的要求外,无外乎就是录入与查询,查询问题先不说,只是想讨论一下录入问题,录入数据时要做好的是准确及方便最好还要好看,如果是一些简单的数据录入的话,那么完全可以使用一个表格(Grid)来入,
例如以下的截图:
对于上述截图的程序我写了个基本的窗体,只要从这个窗体中派生出来,再稍加修改就可以完成这个功能了,我比较讨厌用鼠标去逐个设置DataSource,DataSet等等的属性。
代码类似于如下所示:
type
TfrmSampleQTUserSetting = class(TCustomSimpleDBQTGridForm)
procedure FormDestroy(Sender: TObject);
private
FDeptQry : TCustomDADataSet;
procedure InitCKD;
{ Private declarations }
public
procedure CallAfterCreate; override;
{ Public declarations }
end;
var
frmSampleQTUserSetting: TfrmSampleQTUserSetting;
implementation
uses
FormClassMgrUnit;
{$R *.dfm}
procedure TfrmSampleQTUserSetting.CallAfterCreate;
begin
FTableName := 'fxbr_tb_user';
inherited;
InitCKD;
FieldAdd('人员代码', 60, taCenter);
FieldAdd('人员名称', 100, taCenter);
FieldAdd('科室', 120, taCenter, FDeptQry);
FGridMgr.DoFieldInit
end;
procedure TfrmSampleQTUserSetting.FormDestroy(Sender: TObject);
begin
inherited;
FDeptQry.Close;
FDeptQry.Free;
end;
//弹出来的可选式窗体
procedure TfrmSampleQTUserSetting.InitCKD;
begin
FDeptQry := FlexCoreLibDBUnit.CreateDataSet(BaseConf.SelfDBCnn);
FDeptQry.SQL.Add('select departmentid, departmentname from ');
FDeptQry.SQL.Add('fxbr_tb_department');
FDeptQry.Open;
FDeptQry.Fields[0].DisplayLabel := '科室代码';
FDeptQry.Fields[0].DisplayWidth := 20;
FDeptQry.Fields[1].DisplayLabel := '科室名称';
FDeptQry.Fields[1].DisplayWidth := 30;
end;
initialization
GFormClassMgr.Add(TfrmSampleQTUserSetting);
end.
-------------------
但如果我想要类似以下的效果的时候,有没有好的一些好的方法,即尽量利用继承或模版功能,而不必每次用鼠标去设置