如何让dbgrid像在网页上那样可以多条记录勾选删除,还有全选反选的效果?

大家帮帮忙,用dbgrid的多选效果不行,只能按住ctrl一条条的点,也不能用shift
[44 byte] By [pcbabyyeah8] at [2008-1-9]
# 1
做一个boolean字段不就得了
ron_xin-星雨 at 2007-10-18 > top of Msdn China Tech,Delphi,数据库相关...
# 2
什么做一个boolean字段呀
pcbabyyeah8 at 2007-10-18 > top of Msdn China Tech,Delphi,数据库相关...
# 3
用TwwDBGrid
HsWong at 2007-10-18 > top of Msdn China Tech,Delphi,数据库相关...
# 4
在dbgrid上无法完成你这样的操作,因为dbgrid是直接与数据连接的,没有数据作后盾,就会提示错误。
除非你自己编写一个基于tdbgrid的控件。

建议你使用tstringgrid的控件或者其他类似的三方控件。
longmiaoni at 2007-10-18 > top of Msdn China Tech,Delphi,数据库相关...
# 5
你可以在dbgrid中增加一个空列,然后在这个空列的每个单元格中画上checkbox控件(根据记录数动态创建)然后再根据各个checkbox的值来决定是否删除该记录。这样并没有将checkbox与dbgrid合成一体,但可达到同样的效果。而且可以根据需要调整。
# 6
自己写一个控件,实现一个方法就可以了,在BDgrid上加一列。function addCheckBox(AcolNum : Integer):integer;
指定是第几列
画上checkbox控件(根据记录数动态创建)然后再根据各个checkbox的值来决定是否删除该记录。这样并没有将checkbox与dbgrid合成一体,但可达到同样的效果。而且可以根据需要调整。
chenyansong-Batistuta at 2007-10-18 > top of Msdn China Tech,Delphi,数据库相关...
# 7
在打开数据集的时候,SQL这么写:
select '0' as Selected, * from tblYourTable

然后在界面上就可以用CheckBox来操作这个字段是否打勾。

最后在POST数据集的时候,将该字段设为READONLY,过滤该字段的提交;
TADODateSet.FieldByName('Selected').ReadOnly := True;
Raymond_leixin-小菜 at 2007-10-18 > top of Msdn China Tech,Delphi,数据库相关...
# 8
DBGrid有这个功能:Options->dgMultiSelect;处理选中的记录,通过数据集的书签功能即可。
kongfancheng at 2007-10-18 > top of Msdn China Tech,Delphi,数据库相关...