请问:cxdbtreelist,怎么让节点根据值的不同再改变记录的颜色?我在 cxDBTreeList1的CustomDrawCell事件里写如下代码:procedure TForm1.cxDBTreeList1CustomDrawCell(Sender: TObject;
ACanvas: TcxCanvas; AViewInfo: TcxTreeListEditCellViewInfo;
var ADone: Boolean);
begin if ADOQuery1.FieldByName('DepCode').AsString='0001' then
Acanvas.SetBrushColor(clRed)
end;
刚运行的时候,没有反应,但当鼠标点击到该变颜色的那条记录时,要么就是两条记录的颜色变了,要么就是所有的记录就都变颜色了.
请问该咋弄呢??????????????
ACanvas: TcxCanvas; AViewInfo: TcxTreeListEditCellViewInfo;
var ADone: Boolean);
begin if ADOQuery1.FieldByName('DepCode').AsString='0001' then
Acanvas.SetBrushColor(clRed)
end;
刚运行的时候,没有反应,但当鼠标点击到该变颜色的那条记录时,要么就是两条记录的颜色变了,要么就是所有的记录就都变颜色了.
请问该咋弄呢??????????????
解决方案 »
- 急急急!access violation问题,大虾们帮帮忙
- 请教一个奇怪的问题:为什么在一个PAS文件里,鼠标中间的滚轴不能把PAS文件上下移动?
- I/O问题? 单词虽易,但意深,help me
- 是高手的站出来,如何在DEPHI中实现打开的WORD没有关闭按钮
- 已ado连接Sql server 为例,总结在c/s系统中,客户端程序连接数据库的方法(经典的、普遍的、详细)?
- DELPHI中的第三方报表控件有没有类似PUWERBBUILDER数据窗的?
- 刚下了个installshield,请问怎样做一个数据库的安装盘?
- Lazarus下的串口通信控件
- 怎么关闭掉serversocket其中的一个socket???????
- 关于线程问题?
- 什么时候Delphi才能象微软的Visual studio工具一样的稳定和Bug少呀??
- 在线等待 ,我用delphi7写程序,要用sql 随机抽取表a中按字段zd降序排列的前30条记录中的任意十条记录,请问如何写sql语句?
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if gdSelected in State then Exit; //隔行改变网格背景色:
if FrmDm.ADMachine.FieldByName('Status').AsInteger = MACHINE_STATE_DRAFT then
(Sender as TDBGrid).Canvas.Brush.Color := clInfoBk//RGB(255, 201, 147) //定义背景颜色
else if FrmDm.ADMachine.FieldByName('Status').AsInteger = MACHINE_STATE_AUDITING then
(Sender as TDBGrid).Canvas.Brush.Color := RGB(151, 203, 255) //定义背景颜色
else if FrmDm.ADMachine.FieldByName('Status').AsInteger = MACHINE_STATE_AUDITED then
(Sender as TDBGrid).Canvas.Brush.Color := RGB(165, 220, 220) //定义背景颜色
else if FrmDm.ADMachine.FieldByName('Status').AsInteger = MACHINE_STATE_STANDBY then
(Sender as TDBGrid).Canvas.Brush.Color := RGB(154, 154, 78) //定义背景颜色
else if (FrmDm.ADMachine.FieldByName('Status').AsInteger = MACHINE_STATE_ENCAPSULATED)
or (FrmDm.ADMachine.FieldByName('Status').AsInteger = MACHINE_STATE_ABANDONED) then
(Sender as TDBGrid).Canvas.Brush.Color := clMedGray; //定义背景颜色
procedure TForm1.cxDBTreeList1CustomDrawCell(Sender: TObject;
ACanvas: TcxCanvas; AViewInfo: TcxTreeListEditCellViewInfo;
var ADone: Boolean);
var
vColor : TColor;
begin
vColor := aCanvas.Brush.Color;//先记录原先的颜色
if ADOQuery1.FieldByName('DepCode').AsString='0001' then
Acanvas.SetBrushColor(clRed)
else
Acanvas.SetBrushColor(vColor);
end;
不能用ADOQuery1的值判断,要用AViewInfo中的属性去判断,当然你grid中要增加'DepCode'列,然后在AViewInfo中访问这个列的值,具体是AViewInfo的哪个属性,我帮你找找
ACanvas: TcxCanvas; AViewInfo: TcxTreeListEditCellViewInfo;
var ADone: Boolean);
begin if AViewInfo.Node.Texts[cxCode.ItemIndex]='0001' then
Acanvas.SetBrushColor(clRed)
end; …