起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 393|回复: 13

【结】[请求]关于DataGrid的多选问题**

[复制链接]
发表于 2008-5-6 09:00:22 | 显示全部楼层 |阅读模式
在DataGrid中如何通过CheckBox类型的临时字段实现多行选择,且高亮显示?
回复

使用道具 举报

发表于 2008-5-6 09:05:05 | 显示全部楼层
配合您问的上一个帖子(关于行改颜色的)。把临时字段的表现类型设成CheckBox
回复 支持 反对

使用道具 举报

发表于 2008-5-6 09:11:56 | 显示全部楼层
1.在数据集中建立CheckBox临时字段,在DataDrid中显示
2.在CheckBox字段OnButtonClick事件中,记录下选中的记录(可以记下主键值到一个数组或TStringList).     
3.之后就可以用记下的值。来找到记录,进行下一步处理

(不知楼的操作顺序是怎样的?)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-6 09:12:04 | 显示全部楼层
我是把临时字段设成CheckBox表现类型,现在我所需的是当在DataGrid中将这个字段打上勾,能实现将这行选择,且选择多行的checkbox字段,能实现这些行的选择,且高亮显示。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-6 09:13:40 | 显示全部楼层
我需要在界面上根据我打的勾高亮显示该行
回复 支持 反对

使用道具 举报

发表于 2008-5-6 09:23:08 | 显示全部楼层
1.显示高亮:在上个贴的DataGridCustomDrawCell事件中,用ChekcBox值来决定是否显示高度
2.在CheckBox状态更改时,记下选的行,达到多选目的。(不知多选后要做什么)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-6 09:37:18 | 显示全部楼层
我需将这多选的行对应的数据拷贝到其他表中,要通过所选行的主ID从数据库中挑出数据,然而CheckBox的OnClick事件是在信息层写的,我需要在功能层通过一个按钮来判断是否将这些选择的数据拷贝。最好是当CheckBox打上勾时,这行就被选择了,且高亮,这样我在功能层就能通过SelectedRows来做个循环得到这些记录的主ID
回复 支持 反对

使用道具 举报

发表于 2008-5-6 09:42:02 | 显示全部楼层
procedure TSJWG2.DataGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
begin
  if DataGrid.DataSource.DataSet.FieldByName('lszd1').AsString  = 'True' then
    begin
      AColor := $CCFFFF;
    end ;

end;

http://bbs.justep.com/forum.php?mod=viewthread&tid=13131

http://bbs.justep.com/forum.php?mod=viewthread&tid=4311
应该可以解决问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-6 10:11:35 | 显示全部楼层
我看了你说的那些,我感觉你写的那些代码是让所选的行高亮,但是它就代表已经被选中了吗?
回复 支持 反对

使用道具 举报

发表于 2008-5-6 10:18:51 | 显示全部楼层
楼主,你试一下吧!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 01:42 , Processed in 0.046290 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表