单元格着色

zhongjinting 2003-09-14 03:04:33
我知道在VB里面的HFlexGrid控件可以对任何单元格着色,DELPHI的DBGrid可以做到这一点吗?如果可以,怎么做?
谢谢
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrameSniper 2003-09-15
  • 打赏
  • 举报
回复
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with TDBGrid(Sender) do
begin
case Self.ADOQuery1.RecNo Mod 2 of
0: Canvas.Brush.Color :=clMoneyGreen;
1: Canvas.Brush.Color :=clWindow;
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;

可以揭贴了!
zhongjinting 2003-09-15
  • 打赏
  • 举报
回复
我想根据每个单元格的数据特征,然后用不同的颜色描绘,这样更明显一些.
qwprince 2003-09-15
  • 打赏
  • 举报
回复

在DBGrid1DrawColumnCell()事件中

对任何选中的单元格着色

if gdselected in state then //判断该单元格是否选中
begin
dbgrid1.Canvas.Brush.Color:=clred; //着色
end;
活力华华哥 2003-09-15
  • 打赏
  • 举报
回复
我知道的是每行每列可以控制颜色,具体到每个单元格还没试过。
每列:可在双击dbgrid,添加显示列,选中一列,从 color属性改颜色
每行:
  procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
if adotable1.fieldbyname('id').asinteger mod 2=0 then
begin
dbgrid1.canvas.font.color:=clblue;
dbgrid1.canvas.brush.color:=clgrasientActivecaption;
end;
dbgrid1.DefaultDrawColumnCell(Rect,datacol,column,State);
end;实现隔行显示
qwprince 2003-09-15
  • 打赏
  • 举报
回复
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin //例如
if Field.Name='价格' then
begin
if Field.AsInteger>500 then
dbgrid1.Canvas.Brush.Color:=clred
else
dbgrid1.Canvas.Brush.Color:=clGreen;
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);

end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧