如DBRird显示:
A B C (字段名)
1 0 0 (数
2 0 0
1 1 1 据 )我想将A='2'的那一行的颜色改成其他.
这种情况有办法改吗?
A B C (字段名)
1 0 0 (数
2 0 0
1 1 1 据 )我想将A='2'的那一行的颜色改成其他.
这种情况有办法改吗?
解决方案 »
- 谁能介绍两本DELPHI图形编程方面的好书?
- 如何在程序中动态BDE数据别名的路径
- 心情不好(散分)
- 程序执行问题?着急。。。
- 请问有人知道EnumProcessModules用法吗?
- 请问怎么才能让PopupMenu右击弹出变成左击弹出?在线等待
- 如何得到数据库中字段的详细信息
- 怎样设置环境变量!setenvironmentvariable怎么只是在当前进程有效呢!
- 硬盘急救:我的一个80G非系统硬盘,是NTFS分成一个区,不慎删了分区(没有进一步操作),请问如何恢复,我的500多个文件在根目录。
- 谁有做的自动升级软件模块,好用的?
- Wise的Uninstall问题
- 关于socket的问题!!
dbgrid1.canvas.font.color := clBlue;
dbgrid1.defaultdrawcolumncell(rect,datacol.column,state);
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
dbgrid1.Canvas.Pen.Mode := pmmask;
If aqBaseQuery.fieldbyname('a')='2' Then
Canvas.brush.Color := ClWhite
else
Canvas.brush.Color := $00EAEAEA;
end;
dbgrid1 .DefaultDrawColumnCell(Rect, DataCol, Column, State);
End;
aqBaseQuery.fieldbyname('a')='2' ,指定条件才变颜色,我只要修改了哪 一行,哪 一行颜色就跟着改变,这样可以吗?
Var
p : Integer;
begin
p := Table1.FindField('wage').AsInteger;
//取得当前记录的Wage字段的值。
if(p < 500) then begin
//程序将根据wage值设置各行的颜色。
Color := clGreen;
Font.Style := [fsItalic];
//不仅可以改变颜色,还可以改变字体
end;
if (p >= 500) And (p < 800) then
Color := clRed;
if(p >=800) then begin
Color := clMaroon;
Font.Style := [fsBold];
end;
end;
把adoquery1的locktype设为ltBatchOptimistic ,然后
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (DBGrid1.DataSource.DataSet As TCustomADODataSet).RecordStatus = [rsModified] then
DBGrid1.Canvas.Brush.Color:=CLRed;
DBGrid1.DefaultDrawColumnCell(Rect,datacol,column,state);
end;
但是不要忘了,最后提交是要调用adoquery1.UpdateBatch()
procedure DBGridColumnColor(Sender: TObject;const Rect: TRect;
DataCol: Integer; Column: TColumn;State: TGridDrawState;
singlecolor:TColor;doublecolor:TColor;selectedcolor:TColor);
var
dataset:tdataset;
dbgrid:tdbgrid;
begin
dataset:=TDBGrid(Sender).DataSource.DataSet;
dbgrid:=TDBGrid(Sender);
if (dataset.Recno mod 2) <> 0 then //隔行
begin
dbgrid.Canvas.Font.Color := clWhite;
dbgrid.Canvas.Brush.Color := singlecolor; //这里设置单元格填充色
dbgrid.Canvas.FillRect(Rect); //这里对相应的单元格进行背景色填充
end
else
begin
dbgrid.Canvas.Font.Color := clWhite;
dbgrid.Canvas.Brush.Color :=doublecolor;
dbgrid.Canvas.FillRect(Rect);
end; //输出内容
dbgrid.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.DisplayText);
if gdSelected in State then //被选中行的颜色
begin
dbgrid.Canvas.Brush.Color :=selectedcolor;
dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;procedure DBGridrowColor(Sender: TObject;const Rect: TRect; DataCol: Integer;
Column: TColumn;State: TGridDrawState;singlecolor:TColor;
doublecolor:TColor;selectedcolor:TColor);
var
dbgrid:tdbgrid;
begin
dbgrid:=TDBGrid(Sender);
if Odd(Column.Index) then //隔列
begin
dbgrid.Canvas.Font.Color := clWhite;
dbgrid.Canvas.Brush.Color :=singlecolor; //这里设置单元格填充色
dbgrid.Canvas.FillRect(Rect); //这里对相应的单元格进行背景色填充
end
else
begin
dbgrid.Canvas.Font.Color := clWhite;
dbgrid.Canvas.Brush.Color :=doublecolor; //这里设置单元格填充色
dbgrid.Canvas.FillRect(Rect);
end;
dbgrid.Canvas.TextRect(Rect, Rect.Left, Rect.Top, Column.Field.DisplayText); if gdSelected in State then //被选中行的颜色
begin
dbgrid.Canvas.Brush.Color :=selectedcolor;
dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
把TABLE1的CACHEDUPDATES 设定为true
然后:
procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (table1.UpdateStatus = usModified) then
DBgrid2.Canvas.Brush.Color :=clREd;
DBGrid2.DefaultDrawColumnCell(REct,datacol,column,state);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
table1.CommitUpdates;
end;