3.通用数据表处理
3.1 最简单的数据表处理方案
在第一章中我们建立了一个子窗体的管理机制,现在我们就要利用这一机制来管理我们第一个真正有用的数据表处理窗体,方法与第一章中生成ChildFormC一样,我们先生成一个子窗体,把它保存为ChildFormDBA.pas,并将此窗体命名为frmChildDBA。接着要在MDI_Tutorial.dpr中删除掉Application.CreateForm(TfrmChildDBA, frmChildDBA);,再修改一下ChildFormDBA.pas中的内容,加上以下的内容:
…..
implementation
uses
FormClassMgrUnit;
{$R *.dfm}
initialization
GFormClassMgr.Add(TfrmChildDBA);
end.
最后,在主窗体中增加一个菜单,在菜单的响应事件中加入
procedure TfrmMain.mnChildDBAClick(Sender: TObject);
begin
inherited;
CallChildForm(Sender, 'TfrmChildDBA');
end;
现在,我们可以试一下运行程序,如果没有错误的话,那么应该能够正确打开这个新的窗体的。
现在我们先在数据库中准备两个表,一个是tb_user(用户表),另一个是tb_department(部门表),这两个表的结构及数据如下:
现在我们准备在frmChildDBA中管理tb_user中的数据,现在我们如下图所示在窗体上面添加一些控件,
并作如下相应的设置:
Panel1: TPanel;
gdMain: TDBGrid;
btnADD: TButton;
btnRemove: TButton;
dsMain: TDataSource;
aqMain: TADOQuery;
然后设置gdMain的DataSource为dsMain,设置dsMain中的DataSet为aqMain,设置btnAdd、btnRemove的响应事件,还有FormCreate的事件,修改后的ChildFormDBA.pas内容如下:
……
uses
BaseConfUnit, FormClassMgrUnit;
{$R *.dfm}
procedure TfrmChildDBA.btnADDClick(Sender: TObject);
begin
inherited;
aqMain.Insert;
end;
procedure TfrmChildDBA.btnRemoveClick(Sender: TObject);
begin
inherited;
aqMain.Delete;
end;
procedure TfrmChildDBA.FormCreate(Sender: TObject);
begin
inherited;
self.aqMain.Connection := GBaseConf.MainConnection;
self.aqMain.SQL.Add('select * from tb_user');
self.aqMain.Open;
end;
initialization
GFormClassMgr.Add(TfrmChildDBA);
end.
现在再运行一下程序,正常情况下,程序应能正常地工作。
以上是一个十分简单的程序,应该不说明大家也会很容易就知道其如何工作的。如果不明白那么看一下其它的一些教程就可以了。