起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: zykj

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

[复制链接]
发表于 2010-3-12 09:46:56 | 显示全部楼层
不要在上面的事件中循环数据集.
procedure TSJWG1.DataGridClick(Sender: TObject);
begin
   datagrid.BeginUpdate;
   s := DataSetBrokerBZSJJ1.DataSet.FieldByName('zd2').AsString;
   DataGrid.OnCustomDrawCell :=MyDataGridCustomDrawCell;
   datagrid.EndUpdate;
end;

procedure TSJWG1.MyDataGridCustomDrawCell(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  DataSetBrokerBZSJJ1.DataSet.FieldByName('zd1').AsString=s then
       AFont.Color := Business.System.Graphics.clred;
end;
我的这段代码就是先把字段2的值记录下来,然后在字段1中找到相同的值那么这行就改变颜色,不知道你是否想要这个效果?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-12 10:09:17 | 显示全部楼层
恩。是我想的那样。我马上试试。先谢了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-12 10:29:39 | 显示全部楼层
可以了。但是出现个问题。点击选中某条DataGrid记录要修改时,改不了了,光标不能停在录入框中
回复 支持 反对

使用道具 举报

发表于 2010-3-12 10:55:02 | 显示全部楼层
设置一个变量Boolean类型,
双击的时候变量设置成true,可以编辑,在编辑以后把变量设置成false,在单击事件中判断一下变量的值为false的时候重画。

procedure TSJWG1.DataGridClick(Sender: TObject);
begin
  s := DataSetBrokerBZSJJ1.DataSet.FieldByName('zd2').AsString;
   if not isedit then
   begin
   datagrid.BeginUpdate;

   DataGrid.OnCustomDrawCell :=MyDataGridCustomDrawCell;
   datagrid.EndUpdate;
   datagrid.Invalidate;
   end;
end;
procedure TSJWG1.FormDocCreate(Sender: TObject);
begin
isedit:=false;
end;

procedure TSJWG1.DataGridDblClick(Sender: TObject);
begin
   isedit:=true;
end;

procedure TSJWG1.DataSetBrokerBZSJJ1AfterPost(DataSet: TDataSet);
begin
   isedit:=false;
end;

procedure TSJWG1.DataSetBrokerBZSJJ1AfterEdit(DataSet: TDataSet);
begin
       isedit:=false;
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 17:16 , Processed in 0.036496 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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