DBGridEh设置表中表

原创 2016年08月27日 10:17:09

DBGridEh设置表中表

 

    一、Form放入DBGridEh1

    1、设置属性

    DBGridEh1. RowDetailPane. Active属性设置为True

    此时,DBGridEh1,出现蓝色框。如下图:

二、DBGridEh1,出现蓝色框中,放入DBGridEh2

    1、设置属性

    DBGridEh2. Align:=alClient

    2、字段的选择

    DBGridEh1约定,打开表中表的方法,是第一个字段,即第一列中的。通过鼠标点击,打开子表。因此:

    (1)DBGridEh1的第一个字段,应该是用于分类的字段,比如:“姓名”。这样,在DBGrid1的栏栅中,

    在Form的OnShow事件中,就得有以下的设置:

    SQL:='select 姓名,选择,性别,出生年月,年龄,部门,床号,护理等级,居住地址,户籍地址,入住类型,身份证号,入院日期,出院日期,死亡日期,移动电话,ID '+

             'From 老人基本信息 where 入住类型=''住院'' order by ''入住类型'' DESC,''床号''';

      三、数据集设置

    1DBGridEh1数据集

procedure TShowOldChildFrm.Button1Click(Sender: TObject);

var SQL,S:string;

    L,i:integer;

begin

  S:=Combobox1.Text;

  DBGridEh1.DataSource:=DataModule1.DataSource1;

  if S='' then SQL:='select 姓名,选择,性别,出生年月,年龄,部门,床号,护理等级,居住地址,户籍地址,入住类型,身份证号,入院日期,出院日期,死亡日期,移动电话,ID '+

               'From 老人基本信息 where 入住类型=''住院'' order by ''入住类型'' DESC,''床号'''

          else SQL:='select 姓名,选择,性别,出生年月,年龄,部门,床号,护理等级,居住地址,户籍地址,入住类型,身份证号,入院日期,出院日期,死亡日期,移动电话,ID '+

               'From 老人基本信息 where (入住类型=''住院'') and (部门='+Quotedstr(S)+') order by ''入住类型'' DESC,''床号''';

  DataModule1.ClientDataSet1.Active:=False;

  DataModule1.ClientDataSet1.DataRequest(SQL);

  DataModule1.ClientDataSet1.Active:=True;

  L:=DataModule1.ClientDataSet1.RecordCount;

  DBGridEh1.DataSource:=DataModule1.DataSource1;

  DBGridEh_AutoSize(DBGridEh1,DataModule1.DataSource1);

  for i:= 0 to DBGridEh1.Columns.Count-1 do

  begin

    DBGridEh1.Columns[i].Title.Alignment := taCenter;    //标题对中

    if (i<>8) and (i<>9) then

      DBGridEh1.Columns[i].Alignment:=taCenter;           //  对中

  end;

  DBGridEh1.Columns[0].Width:=90;                              //第一列拉宽

  DBGridEh1.DataSource.DataSet.Fields[1].DisplayLabel:='';         //  修改第二列字段显示名称

  DBGridEh1.DataSource.DataSet.Fields[5].DisplayLabel:='区域';    //修改DBGrid列标题

  SetKeyUp;                                                                    //  鼠标Key事件

  SelectFalse;                                                                 //选择 False

  statusbar1.Panels[0].text:='   数据库有:  '+IntToStr(L)+'人信息';

end;

    2DBGrid2数据集,通过DBGrid1的鼠标键盘事件获取

    (1)鼠标键盘事件方法

procedure TShowOldChildFrm.SetKeyUp;

var SQL,ID,S:string;

begin

  if Not DBGridEh1.DataSource.DataSet.Eof then

  begin

    ID:=DataModule1.ClientDataSet1.FieldByName('身份证号').AsString;

    S:='查询老人姓名:'+DataModule1.ClientDataSet1.FieldByName('姓名').AsString;

    S:=S+'    入住类型:'+DataModule1.ClientDataSet1.FieldByName('入住类型').AsString;

    DBGridEh2.DataSource:=DataModule1.DataSource2;

    SQL:='select 排序,姓名,关系,监护人,工作单位,单位电话,家庭电话,移动电话,'+

        '家庭地址,邮政编码,证件类型,身份证号,老人姓名,老人身份证号,经济状况,备注,ID '+

        'From 老人亲友信息 where老人身份证号='#39+ID+#39+' order by ''排序''';

    DataModule1.ClientDataSet2.Active:=False;

    DataModule1.ClientDataSet2.DataRequest(SQL);

    DataModule1.ClientDataSet2.Active:=True;

    SetSource2(DataModule1.DataSource2);     //  字段对应数据集

    DBGridEh2.Columns.Items[0].Width:=DBGridEh1.Canvas.TextWidth('12345');     //  例宽

    DBGridEh2.Columns.Items[1].Width:=DBGridEh1.Canvas.TextWidth('123456789');

    DBGridEh2.Columns.Items[2].Width:=DBGridEh1.Canvas.TextWidth('12345678');

    DBGridEh2.Columns.Items[3].Width:=DBGridEh1.Canvas.TextWidth('12345678');

    DBGridEh2.Columns.Items[4].Width:=DBGridEh1.Canvas.TextWidth('12345678901234567890');

    DBGridEh2.Columns.Items[5].Width:=DBGridEh1.Canvas.TextWidth('12345678901234');

    DBGridEh2.Columns.Items[6].Width:=DBGridEh1.Canvas.TextWidth('12345678901234');

    DBGridEh2.Columns.Items[7].Width:=DBGridEh1.Canvas.TextWidth('12345678901234');

    DBGridEh2.Columns.Items[8].Width:=DBGridEh1.Canvas.TextWidth('123456789012345678901234567890');

    statusbar1.Panels[0].text:='   数据库有:  '+IntToStr(OldN)+'人信息      '+S;

  end;

end;

    (2)鼠标键盘事件

procedure TShowOldChildFrm.DBGridEh1KeyUp(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

  SetKeyUp;

end;

 

procedure TShowOldChildFrm.DBGridEh1MouseUp(Sender: TObject;

  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

  SetKeyUp;

end;

四、效果

1DBGridEh1

2、打开DBGridEh2

DBGridEh的表中表设置

DBGridEh的表中表设置步骤 在进行数据呈现时,表中表的显示方式也是一种常用的主从表显示类型,DBGridEh控件在这方面的表现是相当优秀的,它不需要任何代码就可以实现该功能。 首先比较重要的是打...
  • js0001
  • js0001
  • 2013年11月29日 11:50
  • 1415

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

在DbGridEh中显示表中表

操作时写的代码并不多,主要问题是需要将所有的数据读内存表不太合适,在修改上应该可以将数据源改为动态。使用的重点是设置DbGridEh1的RowDetailPanel打开,再将DbGridEh2放入,设...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi表格控件DBGridEh全属性设置详解 最全的属性设置说明

很是费了的功夫,把DBGridEh全部属性设置弄出来了   白波九道  2013.9.10 可惜做好的表格传不下来,只好粘成纯文本了 属性 子选项 值 说明 Allowedoperation...
  • my98800
  • my98800
  • 2016年03月11日 16:24
  • 2246

Delphi dbgrideh使用方法

应用实例     Enlib组件包安装成功后,在系统的组件面板中会显示“enlib”组件包标签(如图1),添加DBGridEh到窗体的方法与其它组件一样。在窗体中添加该组件后,请跟我一起来实现图2的...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

DBGridEh, DBGrid显示如何按指定合适显示日期时间

显示日期格式有多种,例如: 2016-9-30 14:31:202016/09/30 14:31:20 想要在Delphi编写出程序DBGridEh DBGrid组件中显示固定格式可以采取...
  • webouse
  • webouse
  • 2016年09月30日 14:42
  • 1019

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DBGridEh设置表中表
举报原因:
原因补充:

(最多只允许输入30个字)