delphi dbgrid 下拉列表和选择框_第1页
delphi dbgrid 下拉列表和选择框_第2页
delphi dbgrid 下拉列表和选择框_第3页
delphi dbgrid 下拉列表和选择框_第4页
delphi dbgrid 下拉列表和选择框_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 DBgrid 第一列加入CheckBox,点击列头 全选/全消分类: Delphi2012-06-18 15:35 3595人阅读 评论(0) 收藏 举报integersqlserver数据库button真对sqlserver数据说明(其他数据库没有试过):在数据库对应的表中加入  bit 列验证是否被选中然后dbgrid第一列的filedname是bit列在DBgrid的onDrawColumnCell事件中写:procedure DBGrid1DrawColumnCell(Sender: TObject; 

2、const Rect: TRect; DataCol: Integer; Column: TColumn;  State: TGridDrawState);const  CtrlState: arrayBoolean of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);begin        if column.Field.DataType=ftboolean   then  

3、0;             begin                        DBGrid1.Canvas.FillRect(rect);        

4、60;               drawframecontrol(DBGrid1.Canvas.Handle,rect,dfc_button,ctrlstatecolumn.Field.asboolean);                end;end;上方事件写完后会在第一行第一列出现复选框 

5、; 在dbgrid的oncellclick事件中写,目的就是实现单击时  复选框被选中procedure TcgDaohuodj.DBGrid1CellClick(Column: TColumn);begin        if DBGrid1.SelectedField.DataType=ftboolean   then              

6、;  begin                        DBGrid1.SelectedField.DataSet.Edit;                   

7、;     DBGrid1.SelectedField.AsBoolean:=not DBGrid3.SelectedField.AsBoolean;                        DBGrid1.SelectedField.DataSet.Post;     &

8、#160;          end;end;在dbgrid的ontitileclick事件中写如下代码,目的是点击bit列是实现全选和全消procedure DBGrid1TitleClick(Column: TColumn);var i:integer;begin       if column.Index=0 then begin    /验证是否第一列     

9、;   adoquery1.First;                /游标回滚        DBGrid1.SelectedRows.CurrentRowSelected:=true;    /第一行被选中        if trim(column.T

10、itle.Caption)='全选' then                begin                        for i:=0 to dbgrid1.DataSource.Dat

11、aSet.RecordCount-1 do                                begin              

12、60;                         dbgrid1.Fields0.DataSet.edit;                    

13、60;                   dbgrid1.Fields0.AsBoolean:=true;                          

14、              dbgrid1.Fields0.DataSet.post;                                

15、        dbgrid1.datasource.dataset.next;                                end;     

16、0;                  column.Title.Caption:='全消'                end        else   &#

17、160;            begin                        for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do     

18、                           begin                       

19、                 dbgrid1.Fields0.DataSet.edit;                             

20、           dbgrid1.Fields0.AsBoolean:=false;                                  &#

21、160;     dbgrid1.Fields0.DataSet.post;                                        dbgrid1

22、.datasource.dataset.next;                                end;              

23、          column.Title.Caption:='全选'                end;       adoquery1.First;    /游标回滚      

24、60; DBGrid1.SelectedRows.CurrentRowSelected:=true;  /选中第一行        end;end; 效果如图Delphi的DBGrid的下拉列表  转 (2011-07-02 04:32:25)转载标签: 杂谈 以下是<Delphi的DBGrid的下拉列表>在用 Delphi 开发数据库应用系统时,利用数据网格DBGrid 输入数据时,有些字段只允许某几个固定的字符

25、串,像档案案卷的保管期限,只有“永久”、“长期”和“短期”三种,可否从一个下拉列表中进行选择,从而方便输入和避免输入错误呢?还有一些字段,例如职工信息库中的单位编号(在另外的单位库中保存着单位的详细信息),在输入和显示职工数据时,能否不对单位编号进行操作,而代之于更加直观的单位库中的单位名称呢?答案是肯定的,Delphi 的数据网格控件 DBGrid,支持下拉列表和查找字段的编程,而且,编程的过程都是可视化的,不需要写一行语句。一、DBGrid 中的下拉列表在 DBGrid 网格中实现下拉列表,设置好 DBGrid 中该字段

26、的 PickList 字符串列表、初始的序号值 DropDownRows 即可。以职工信息库中的籍贯字段(字符串类型)为例,具体设计步骤如下: 1、在窗体上放置Table1、DataSource1、DBGrid1、DBNavigator1 等控件对象,按下表设置各个对象的属性:-对象 属性 设定值-Table1 DataBase sy1 Tablezgk.dbf /职工信息库DataSource1DataSetTable1DbGrid1DataSource Data

27、Source1DBNavigator1 DataSource Datasource1-2、双击Table1, 在弹出的Form1.Table1 窗口中,用右键弹出快捷菜单,单击Add Fields 菜单项;选择所有的字段后,按OK 按钮。3、修改第2 步新增字段的 DisplayLabel 属性。以 Table1ZGBH 字段为例,在 Object Inspector 窗口中选择 Table1ZGBH, 修改属性 D

28、isplayLabel= 职工编号,其余字段类似。4、双击 DBGrid1, 在弹出的 Editing DBGrid1.Columns 窗口中,单击 Add all Fields 按钮,增加Table1 的所有字段。5、在 Editing DBGrid1.Columns 窗口,选择 jg 这一行,切换到 Object Inspector 窗口,修改它的 PickList.Strings 

29、为“湖北枝江市(换行)北京市(换行)河南平顶山市(换行)浙江德清市”6、在 Form1.Oncreate 事件中写入语句:Table1.Open;7、F9 运行,用鼠标点击某个记录的籍贯字段,右边即出现一个按钮,点击这个按钮,可出现一个下拉列表,包含第5 步中输入的四行字符串,可用鼠标进行选择。当然也可以自行输入一个并不属下拉列表中的字符串。二、DBGrid 中的查找字段所谓查找字段 (LookUp Field),即 DBGrid 中的某个关键字段的数值来源于另外一个数据库的相应字段。运用查找字段技术,不

30、仅可以有效的避免输入错误,而且 DBGrid 的显示方式更为灵活,可以不显示关键字段,而显示源数据库中相对应的另外一个字段的数据。 - 例如,我们在 DBGrid 中显示和编辑职工信息,包括职工编号、职工姓名、籍贯、所在单位编号,而单位编号来源于另一个数据库表格单位库,称“单位编号”为关键字段。如果我们直接显示和编辑单位编号的话,将会面对1、2、3 等非常不直观的数字,编辑时极易出错。但是如果显示和编辑的是单位库中对应的单位名称话,将非常直观。这就是DBGrid 的所支持的查找字段带来的好处。实现DBGrid

31、60;的查找字段同样不需要任何语句,具体设计步骤如下: 1、在窗体上放置 Table1、Table2、DataSource1、DBGrid1、DBNavigator1 等控件对象,按下表设置各个对象的属性:-对象 属性 设定值-Table1 DataBase sy1 Tablezgk.dbf /职工信息库Table2 DataBase sy1 Tabledwk.dbf /单位信息库DataSource1DataSetTable1DbGrid1DataSource&#

32、160;DataSource1DBNavigator1 DataSource Datasource1-2、双击 Table1, 在弹出的 Form1.Table1 窗口中,用右键弹出快捷菜单,单击 Add Fields 菜单项;选择所有的字段后,按OK 按钮。3、修改第2 步新增字段的 DisplayLabel 属性。以 Table1ZGBH 字段为例,在 Object Inspector 窗口中选择 Ta

33、ble1ZGBH, 修改属性 DisplayLabel= 职工编号,其余字段类似。4、设置 Table1DWBH.Visible=False。5、在 Form1.Table1 窗口,用右键弹出快捷菜单,单击 New Field 菜单项,新增一个查找字段DWMC,在弹出的窗口设置相应的属性, 按 OK 按钮确认;在 Object Inspector 窗口,设置 Table1DWMC.DisplayLabel= 单位名称。6、在&

34、#160;Form1.Oncreate 事件中写入语句:Table1.Open;7、按 F9 运行,当光标移至某个记录的单位名称字段时,用鼠标点击该字段,即出现一个下拉列表,点击右边的下箭头,可在下拉列表中进行选择。在这里可以看出,下拉列表的内容来自于单位信息库,并且不能输入其他内容。三、DBGrid 中的下拉列表和查找字段的区别虽然 DBGrid 中的下拉列表和查找字段,都是以下拉列表的形式出现的,但两者有很大的差别。 1、用 PickList 属性设置的下拉列表,它的数据是手工输入的,虽然也可以在程序

35、中修改,但动态特性显然不如直接由另外数据库表格提取数据的查找字段。2、用 PickList 属性设置的下拉列表,允许输入不属于下拉列表中的数据,但查找字段中只能输入源数据库中关键字段中的数据,这样更能保证数据的完整性。3、用 PickList 属性设置的下拉列表设计较为简单。 合理的布局,绚丽的样式,谈谈Winform程序的界面设计从事Winform开发很多年了,由于项目的需要,设计过各种各样的界面效果。一般来说,运用传统的界面控件元素,合理设计布局,能够设计出比较中规中矩的标准界面;利用一些换肤的控件或者部分界面组件,能够设计出相对好看一些的

36、界面效果,如以前很盛行的ActiveSkin、IrisSkin和DotNetSkin等,这些能够对传统的界面元素进行换肤,确实比标准灰色的界面控件好看了很多。不过随着界面控件的组件发展,目前一般倾向于是用较为大型的控件组,他们除了提供设计得体的界面控件外,还提供了非常多种绚丽多彩的界面样式供选择,如DotNetBar、netadvantage、DevExpress等大型界面控件组。无论界面设计如何变化,一般基本原则都是为客户提供直观、易用、体验效果较好的界面效果哦,从Office的发展历程我们也可以看到整体的界面效果趋向,从开始的标准控件到目前的Ribbon窗体,从单色调变化到绚丽多彩的界面样

37、式,都给我们提供很好的界面设计参考,大型的界面组件也是模仿这一趋势。言归正传,我们来谈谈详细一点的东西,目前我趋向于采用一种基于Ribbon样式的界面,以及一种基于传统界面结合OutLook样式的界面设计。 一、基于Ribbon样式的界面  以上的界面样式,是一种比较大气、符合Office界面效果的界面布局,通过把不同的功能块集中在不同的面板上显示,确实简洁、美观很多,本文不重复介绍该界面效果的优劣,我们主要来集中看看下面的另外一种界面效果。二、基于OutLook样式的界面设计其实OutLook样式很早就有,也可以在很多公开的控件组中看到,如果仅仅是追求部分的OutLook界面效果,而不是整体性的方案,那么CodeProject上的这款开源Outlook组件,估计是其中的佼佼者(以上通过把一个系统很多相关的功能模块放到一颗树上进行分类展示,对于一个比较复杂的人力资源管理系统或者其他复杂功能的系统,也是一个比较合理的布局方式,另外OutLook工具条还是可以隐藏起来,节省右边多文档界面的数据展示空间,这样整体还是比较合理及美观的。其中右边的布局,还可以通过Sp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论