关于dxDBGrid 的使用方法,如何让某一行的字体的颜色为红色。在表中有一个字段为“tpye”,当“tpye”值为“0”时,dxDBGrid 的那一行不变化,当“tpye”值为“1”时这一行的字体的颜色为红色。如:
tpye
1
0
0
0
1
1
1
dxDBGrid 显示的数据为:
(括车内为字体颜色)
tpye
1 (红色)
0 (黑色)
0 (黑色)
0 (黑色)
1 (红色)
1 (红色)
1 (红色)
tpye
1
0
0
0
1
1
1
dxDBGrid 显示的数据为:
(括车内为字体颜色)
tpye
1 (红色)
0 (黑色)
0 (黑色)
0 (黑色)
1 (红色)
1 (红色)
1 (红色)
tpye
1
0
0
0
1
1
1
procedure TForm1.dxDBGrid1CustomDrawCell(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
ASelected, AFocused, ANewItemRow: Boolean; var AText: string;
var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
var ADone: Boolean);
begin
if ANode.Values[i] = 1 then
begin
AColor := clRed;
end;
end;i为你的type字段在dxDBGrid中的位置,第一列为0,依此类推
在变色条件列上写该列的一个事件:
procedure TForm1.dxDBGrid1typeCustomDrawCell(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
var AText: String; var AColor: TColor; AFont: TFont;
var AAlignment: TAlignment; var ADone: Boolean);
begin
if ANode.Values[i] = 1 then
begin
AColor := clRed;
end;
end;
这样,type这一列的颜色就达到要求了;
接下来,把所有列的CustomDrawCell事件都关联到dxDBGrid1typeCustomDrawCell事件,OK!
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
var AText: string; var AColor: TColor; AFont: TFont;
var AAlignment: TAlignment; var ADone: Boolean);
begin
inherited;
if ANode.Strings[dg.ColumnByName('dgColumn13').Index] = '0' then
AColor:=clFuchsia;
end;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
var AText: String; var AColor: TColor; AFont: TFont;
var AAlignment: TAlignment; var ADone: Boolean);
var
Value: Variant;
begin
{
clBlack = TColor($000000);
clMaroon = TColor($000080);
clGreen = TColor($008000);
clOlive = TColor($008080);
clNavy = TColor($800000);
clPurple = TColor($800080);
clTeal = TColor($808000);
clGray = TColor($808080);
clSilver = TColor($C0C0C0);
clRed = TColor($0000FF);
clLime = TColor($00FF00);
clYellow = TColor($00FFFF);
clBlue = TColor($FF0000);
clFuchsia = TColor($FF00FF);
clAqua = TColor($FFFF00);
clLtGray = TColor($C0C0C0);
clDkGray = TColor($808080);
clWhite = TColor($FFFFFF);
StandardColorsCount = 16; clMoneyGreen = TColor($C0DCC0);
clSkyBlue = TColor($F0CAA6);
clCream = TColor($F0FBFF);
clMedGray = TColor($A4A0A0);
ExtendedColorsCount = 4; clNone = TColor($1FFFFFFF);
clDefault = TColor($20000000);
}
if ANode.HasChildren then
Exit;
if not ASelected and (AColumn = TYPE) then
begin
Value := ANode.Values[AColumn.Index];
if (not VarIsNull(Value) ) and Value =1 then
AColor := clRed //or AColor := $0000FF
end;
end;