DBgrid 第一列加入CheckBox,点击列头 全选/全消
来源:互联网 发布:组态软件的组成 编辑:程序博客网 时间:2024/06/10 23:07
真对sqlserver数据说明(其他数据库没有试过):
在数据库对应的表中加入 bit 列验证是否被选中
然后dbgrid第一列的filedname是bit列
在DBgrid的onDrawColumnCell事件中写:
procedure 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;
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;
上方事件写完后会在第一行第一列出现复选框
在dbgrid的oncellclick事件中写,目的就是实现单击时 复选框被选中
procedure TcgDaohuodj.DBGrid1CellClick(Column: TColumn);
begin
if DBGrid1.SelectedField.DataType=ftboolean then
begin
DBGrid1.SelectedField.DataSet.Edit;
DBGrid1.SelectedField.AsBoolean:=not DBGrid3.SelectedField.AsBoolean;
DBGrid1.SelectedField.DataSet.Post;
end;
end;
begin
if DBGrid1.SelectedField.DataType=ftboolean then
begin
DBGrid1.SelectedField.DataSet.Edit;
DBGrid1.SelectedField.AsBoolean:=not DBGrid3.SelectedField.AsBoolean;
DBGrid1.SelectedField.DataSet.Post;
end;
end;
在dbgrid的ontitileclick事件中写如下代码,目的是点击bit列是实现全选和全消
procedure DBGrid1TitleClick(Column: TColumn);
var i:integer;
begin
if column.Index=0 then begin //验证是否第一列
adoquery1.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;
adoquery1.First; //游标回滚
DBGrid1.SelectedRows.CurrentRowSelected:=true; //选中第一行
end;
end;
var i:integer;
begin
if column.Index=0 then begin //验证是否第一列
adoquery1.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;
adoquery1.First; //游标回滚
DBGrid1.SelectedRows.CurrentRowSelected:=true; //选中第一行
end;
end;
效果如图
转自:http://blog.csdn.net/yuebao353981348/article/details/6703722
- DBgrid 第一列加入CheckBox,点击列头 全选/全消
- DBgrid 第一列加入CheckBox,点击列头 全选/全消
- C# GridView列头添加CheckBox控件实现全选功
- DataGridView列头checkbox
- 列头Checkbox
- HTML5定制全选列头
- 在DataGridView加入CheckBox列
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能
- 如何实现单击在DATALIST(DATAGRID)的HEADER加入的CHECKBOX,进行DATALIST(DATAGRID)中的CHECKBOX列全选或全不选
- 如何实现单击在DATALIST(DATAGRID)的HEADER加入的CHECKBOX,进行DATALIST(DATAGRID)中的CHECKBOX列全选或全不选
- flex 给DataGrid添加CheckBox全选列
- ListView点击列头排序
- ListView点击列头排序
- gridview点击列头排序
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能 几种实现方法
- Delphi中DBgrid控件数据库点击某列按序排列
- 带CheckBox列头的DataGridView(一)
- ADO.net执行存取过程时间过长的一个解决方式
- VS "安装和部署项目"生成的快捷方式问题
- 聚簇索引与非聚簇索引的区别以及SQL Server查询优化技术
- 应用python编写简单新浪微博应用(一)
- WindowsPhone开发系列(官方教程已有中文字幕)
- DBgrid 第一列加入CheckBox,点击列头 全选/全消
- 应用python编写简单新浪微博应用(二)
- jquery/js 实现 标签 条码 一维码 Web页面 区域打印解决方案 实例
- 各种编程书籍
- Javascript代码规范
- windows程序设计——CreateProcess()
- 程序员面试题精选-翻转句子中单词的顺序[算法]
- JAVA中单例模式讲解
- mvc 一个controler 多个view