在dbgrid中第一列怎么加个 复选框功能?

liangliang1983 2011-04-09 12:42:42
用户可以对多行记录可以选取,不要用第三方控件.知道的朋友指点下,谢谢
...全文
319 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
PANTI 2011-04-10
  • 打赏
  • 举报
回复
为什么不用DbGridEH
liangliang1983 2011-04-10
  • 打赏
  • 举报
回复
哪位朋友肯传份 infopower for delphi2010版的控件给我。 xt22@163.com 。急等用,谢谢了。
sforiz 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liangliang1983 的回复:]
to :sforiz

谢谢你的代码,我试了下不是我要的结果。我要的是在dbgrid中前每一行第一列出现一个 “□” 复选框,
用户可以在复选框中选择多行记录,然后我根据用户选择好的记录数保存到另一个表中。

我之前是用 infopower这套控件的,用wwdbgrid一下子就可以解决这个问题的。但现在我用的是 delphi2006,没有infopower这套控件。
[/Quote]
if Column.ID = 0 then
就会画到最左边的一列中了
liangliang1983 2011-04-09
  • 打赏
  • 举报
回复
to :sforiz

谢谢你的代码,我试了下不是我要的结果。我要的是在dbgrid中前每一行第一列出现一个 “□” 复选框,
用户可以在复选框中选择多行记录,然后我根据用户选择好的记录数保存到另一个表中。

我之前是用 infopower这套控件的,用wwdbgrid一下子就可以解决这个问题的。但现在我用的是 delphi2006,没有infopower这套控件。
liangliang1983 2011-04-09
  • 打赏
  • 举报
回复
bdmh:不行呀,能不能帮忙写个 demo 呀。我急用呀
bdmh 2011-04-09
  • 打赏
  • 举报
回复
简单点吧,增加一个辅助字段,设为bool型,这就可以了,做完操作,update这个字段为false
liangliang1983 2011-04-09
  • 打赏
  • 举报
回复
谢,楼上两位。我等下试下
sforiz 2011-04-09
  • 打赏
  • 举报
回复
补充一点
Image2
Image1是两张图片,checkbox那样的小方框,一个打了勾,一个没有打勾
sforiz 2011-04-09
  • 打赏
  • 举报
回复
画上去的,你代码的定义前加上这一句 TMyCustomDBGrid = class(TCustomDBGrid);
以下代码添加到DBGridDrawColumnCell事件中

with TMyCustomDBGrid(Sender) do
begin
DefaultDrawColumnCell(Rect, DataCol, Column, State);

if (Column.ID = 1) then
begin
if ClientDataSetDBGrid.RecordCount > 0 then
begin
if (ClientDataSetDBGrid.FieldByName('Check').AsInteger = 1) then
Canvas.StretchDraw(Rect, Image2.Picture.Graphic)
else
Canvas.StretchDraw(Rect, Image1.Picture.Graphic);
end;
end;
end;
dinoalex 2011-04-09
  • 打赏
  • 举报
回复
画CHECKBOX上去,网上很多这个代码.

如果没有这个列,你可以使用临时表,或多建一个表(比原表多一列(BIT)),操作时导入表.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧