要求在某条数据满足条件时,满足该条件的那行会变色,但遇到了麻烦。
虽然满足条件的那行会变色,但鼠标点击该行后,在点别的行,被点的那行也同样会变色,不知如何解决,还请高手出手相助
虽然满足条件的那行会变色,但鼠标点击该行后,在点别的行,被点的那行也同样会变色,不知如何解决,还请高手出手相助
解决方案 »
- 求n个数的最大公约数和最小公倍数(新手需要代码)
- 开打并关闭Form/Dll发现内存都要多占用0.0及M,重复这样的操作,长时间运行且不要出问题,寻求解决办法.
- Treeview如何动态改变选中节点颜色?
- 请教一个打印的问题
- 来看看这个问题。分不够在加
- 看看人家的职业道德,你能不内疚吗??
- treeview的问题
- @@@@@诚招重庆籍DELPHI程序员,有意请联系[email protected]
- 求教Quick Report 打印备注字段换行的办法,答者有分了!!!
- 多层应用程序中,客户端和服务器端的联接的问题?
- 清除直线的问题
- 我怎么卸载装在WIN95上的MDAC!(@@@@@总计1000分的问题!)
procedure TForm1.cxGDBTVCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
begin
if ADOQuery1.FieldByName('Age').AsFloat > 20 then
begin
TcxCustomGridTableView(Sender).ViewInfo.Canvas.Brush.Color := clYellow;
TcxCustomGridTableView(Sender).ViewInfo.Canvas.Font.Color := clBlack;
end;
下面是DBGridEh的OnDrawCell的定義DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);判斷是否選中可以用如下代碼:
if gdSelected in state then由於我還沒有搞過TcxCustomGridTableView,所以以TDBGridEh為例
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
begin
if ADOQuery1.FieldByName('Age').AsFloat > 20 then
begin
TcxCustomGridTableView(Sender).ViewInfo.Canvas.Brush.Color := clYellow;
TcxCustomGridTableView(Sender).ViewInfo.Canvas.Font.Color := clBlack;
end;
else
begin
TcxCustomGridTableView(Sender).ViewInfo.Canvas.Brush.Color := clWhite;
TcxCustomGridTableView(Sender).ViewInfo.Canvas.Font.Color := clBlack;
end;
// 你找找看有沒有斷定當前行是否選擇的屬性.
// 同樓上的那樣
end;
duanhai(段海) 给出的提议不错,但我找DevExpress QuantumGrid的state相关属性没找到,而且DbGridEh控件也不用设,就可达到我想要的效果
konhon(优华) 给出的代码我也写过,就是不行我才上网找高手求助
procedure TFm_Kccx.GD_RkcxBTCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
var sYxq,sSjzt:string;
dYxq:TDateTime;
Sjzt:Integer;
BColor,FColor:TColor;
begin
sYxq:=Trim(VarAsType(AViewInfo.GridRecord.DisplayTexts[GD_RkcxBTYxq.Index], varString));
sSjzt:=Trim(VarAsType(AViewInfo.GridRecord.DisplayTexts[GD_RkcxBTSjzt.Index], varString));
Try
dYxq:=StrToDate(sYxq);
Except
dYxq:=Now;
End;
Try
Sjzt:=StrToInt(sSjzt);
Except
Sjzt:=1;
End;
BColor:=ACanvas.Canvas.Brush.Color;
FColor:=ACanvas.Canvas.Font.Color;
if ( (Trunc(dYxq)<=Trunc(Now)) and ((Sjzt and 4)>0) ) then begin
BColor :=$00B3BBEA ;//clred;
FColor := clBlue;
end;
if ( (Trunc(dYxq)<=Trunc(Now)) and ((Sjzt and 4)=0) ) then begin
BColor :=$00B3BBEA ;////$00C8CEF0;
FColor := clblack;
end;
if ( (Sjzt and 2)>0 ) then begin //坏卡
BColor :=$0079FFFF ;////$00C8CEF0;
FColor := clblack;
end;
if AViewInfo.Selected then begin
BColor :=clNavy ;
FColor :=clwhite;
end;
ACanvas.Canvas.Brush.Color:=BColor;
ACanvas.Canvas.Font.Color:=FColor;
end;
belllab(菜鸟) 的方法可以!谢谢!