起步软件技术论坛-X3

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

如何给DataGrid的某几条记录着色

[复制链接]
发表于 2010-3-11 16:43:22 | 显示全部楼层 |阅读模式
想在点击某一条DataGrid记录时,在onclick事件里遍历一下数据集,判断下数据集中哪几条记录与当前选中的记录是有关联关系的,有关联的几条记录需变成同一着色。要如何实现。在onclick事件中无Acolor属性,要怎么着色。
回复

使用道具 举报

 楼主| 发表于 2010-3-11 16:55:06 | 显示全部楼层
急,在线等。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-11 17:02:55 | 显示全部楼层
有人知道吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-11 17:13:05 | 显示全部楼层
今天都没人吗?急
回复 支持 反对

使用道具 举报

发表于 2010-3-11 17:41:25 | 显示全部楼层
http://bbs.justep.com/forum.php? ... ht=oncustomdrawcell
用关键字 OnCustomDrawCell 搜索!
回复 支持 反对

使用道具 举报

发表于 2010-3-11 17:42:15 | 显示全部楼层
自己做一个和OnCustomDrawCell一样的方法,然后在里面设计你的逻辑
然后在DataGridClick方法中用你的方法接管一下OnCustomDrawCell方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-11 17:48:02 | 显示全部楼层
为什么要再做一个和OnCustomDrawCell一样的方法,如果OnCustomDrawCell方法里写正确了不是也能用,我现在应该是在OnCustomDrawCell方法里遍历写的不对,在和OnCustomDrawCell方法里要怎么正确地写遍历。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-12 09:05:31 | 显示全部楼层
procedure TDD_YXRZJL.DataGrid2CustomDrawCell(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);
var
  Id,StrLX,StrGLLXID,StrGLLXBM:string;
begin

            if DSBYXRZJL.DataSet.RecordCount>1 then
            begin
               Id:=DSBYXRZJL.DataSet.FieldByName('INST_ID').AsString;
               StrLX:=DSBYXRZJL.DataSet.FieldByName('LX').AsString;
               StrGLLXID:=DSBYXRZJL.DataSet.FieldByName('GLLXID').AsString;
               StrGLLXBM:=DSBYXRZJL.DataSet.FieldByName('GLLXBM').AsString;
               DSBYXRZJL.DataSet.First;
               while not DSBYXRZJL.DataSet.Eof do
               begin
                    if ((StrLX=DSBYXRZJL.DataSet.FieldByName('LX').AsString)and(StrGLLXID=DSBYXRZJL.DataSet.FieldByName('GLLXID').AsString)and(StrGLLXBM=DSBYXRZJL.DataSet.FieldByName('GLLXBM').AsString)) or ((StrLX=DSBYXRZJL.DataSet.FieldByName('LX').AsString)and(StrGLLXID=DSBYXRZJL.DataSet.FieldByName('GLLXID').AsString)) then
                         AFont.Color :=$547C03;
                    DSBYXRZJL.DataSet.Next;
               end;
               DSBYXRZJL.DataSet.Locate('INST_ID',[Id],[]);
            end;  
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-12 09:10:20 | 显示全部楼层
按我上面的写法,就是不对,数据集指针一变,焦点一直在动,找开功能就一直闪。
我想知道,如果实现上面数据集那种实现方法,就是我想把焦点所在记录的相关值取出来,然后与数据集的所有记录比对一次,若有关联,则都变成同一色。最后焦点还停在原来的焦点上。行移动的代码怎么写
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-12 09:11:49 | 显示全部楼层
急,我明天就得试运行了。今天必须得解决这个问题。希望大家能帮帮忙。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 17:42 , Processed in 0.039776 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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