DBGrid上设置选择项
来源:互联网 发布:2016淘宝活动报名入口 编辑:程序博客网 时间:2024/06/05 23:41
当数据集有选择的时候,比如选择性打印,而且这种选择是随用户的主观意念决定时。在DBGrid上设置选择项,就非常必要和非常有用了。
在DBGrid上设置选择项,操作如下:
一、加入DB单元,因为要DB相关设置。
uses DB;
二、在Table的字段设置一个可供选择的字段,例使用中文字段“选择”,属性:bit。
三、显示Table的DBGrid中,将该字段设置为第1列,即DBGrid1.Columns.Items[0]。DBGrid初始化时加入下列代码:
DBGrid3.DataSource.DataSet.Fields[0].DisplayLabel:='√'; // 设置选择列显示名称
DBGrid3.Columns.Items[0].Width:=DBGrid1.Canvas.TextWidth('123'); // 设置选择列宽度
四、在DBGrid1CellClick事件中,使用下列代码。功能是只要鼠标点击“选择”列,其Boolean值为原值的反值。
procedure TPrintTableFrm.DBGrid1CellClick(Column: TColumn);
begin
if DBGrid1.SelectedField.DataType=ftboolean then
begin
with DBGrid1.DataSource.DataSet do
begin
Edit;
DBGrid1.SelectedField.AsBoolean:=not DBGrid1.SelectedField.AsBoolean;
Post;
DBGrid1.Options:=DBGrid1.Options-[dgEditing];
end;
end
else begin
if DBGrid1.SelectedField.DataType<>ftboolean then
DBGrid1.Options:=DBGrid1.Options+[dgEditing];
end;
end;
五、在DBGrid1DrawColumnCell事件中,使用下列代码。功能就是重新画“选择”列上的字符。
procedure TPrintTableFrm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
const
CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
if Column.Field.DataType = ftBoolean then
begin
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle,
Rect,
DFC_BUTTON,
CtrlState[Column.Field.AsBoolean]);
end;
end;
六、在DBGrid1TitleClick事件中,使用下列代码。功能就是只要鼠标点击“选择”列的标题,可以设置“全选”或“全非”。
procedure TPrintTableFrm.DBGrid1TitleClick(Column: TColumn);
var i:integer;
begin
if column.Index=0 then //验证是否第一列
begin
DBGrid1.DataSource.DataSet.DisableControls;
DBGrid1.DataSource.DataSet.First; //游标回滚
DBGrid1.SelectedRows.CurrentRowSelected:=true; //第一行被选中
if trim(column.Title.Caption)='√' then
begin
for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do
begin
dbgrid1.Fields[0].DataSet.edit;
dbgrid1.Fields[0].AsBoolean:=true;
dbgrid1.Fields[0].DataSet.post;
dbgrid1.datasource.dataset.next;
end;
column.Title.Caption:='×';
end
else begin
for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do
begin
dbgrid1.Fields[0].DataSet.edit;
dbgrid1.Fields[0].AsBoolean:=false;
dbgrid1.Fields[0].DataSet.post;
dbgrid1.datasource.dataset.next;
end;
column.Title.Caption:='√';
end;
DBGrid1.DataSource.DataSet.First; //游标回滚
DBGrid1.SelectedRows.CurrentRowSelected:=true; //选中第一行
DBGrid1.DataSource.DataSet.EnableControls;
end;
end;
通过上述代码设置,编译可见效果图
- DBGrid上设置选择项
- DBGrid多行选择
- 设置DBGrid单元格颜色
- dbgrid单元格选择数据录入
- Dbgrid使用技巧(上)-
- Dbgrid使用技巧(上)
- Dbgrid使用技巧(上)
- DBGrid 各属性的设置
- DBGrid 各属性的设置
- dbgrid
- DBGrid,StringGrid设置列宽行距
- 动态设置DBGrid下Options属性
- DBGrid中选择整行,并且可以多选
- 如何在DBGrid中能支持多项记录的选择
- 设置DBGrid列可以手动设置宽度,不能拖动。
- windows设置开机选择项
- 平台下拉选择设置项
- 将DBGrid 当前列定位到指定的字段上
- C语言循环结构总结笔记
- 百度眼中的原创
- 天天用的开发环境,你真的了解吗?
- VB.Net 三层登录实例
- 算法导论-栈和队列的简单实现
- DBGrid上设置选择项
- 九度 题目1443:Tr A
- apache kafka系列之Controller设计机制和状态变化
- 内存拷贝函数编写
- jsp在线投票系统实验
- 黑马程序员-----------java 十进制转换成其他任意进制
- ssh 无密码验证 及 ssh localhost 仍然需要密码的解决方案
- jquery cookie(备忘)
- mysql char varchar text的区别