dbgrid实现行列操作(100分)

  • 主题发起人 主题发起人 一帆
  • 开始时间 开始时间

一帆

Unregistered / Unconfirmed
GUEST, unregistred user!
1。如何在Delphi5.0中不重新制作新控件的情况下
随意控制dbgrid每一行列的颜色,显示光标,
做成速达2000表格的效果呢?
2。自定义的类的属性为何不能赋值?

如答任一题,必有重谢!如答全答,万分感谢!
 
不重新制作控件的话,只有使用 OnDrawColumnCell 事件了。
这个事件 Delphi 有详细的说明,改变格子颜色的代码也有 Example,无非是你自己在事件
代码中判断一下行列,颜色就自己填了(Canvas.Brush.Color := clXXXX)。
自定义的类的属性为何不能赋值? 不存在这样的问题,好好看看属性定义的语法吧。
Ok ?
From: BaKuBaKu
 
agree BaKuBaKu
 
Delphi Tips

From The Cobb Group

Transtor:傅贵

97.10.13如何动态更新DBGrid的颜色?(Delphi 3 and 2.0)

DBGrid控件是一个有许多用户接口的显示数据库的控件,以下的程序告诉您如何根据显示的内容改变字体的显示颜色。例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为DBGrid.OnDrawColumeCell.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if Table1.FieldByName('Population').AsInteger > 20000000 then

DBGrid1.Canvas.Font.Color := clBlue;

DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;

上面的例子是简单的,但是你可以根据自己的需要扩充,例如字体也变化等,甚至你可以调用画圆的函数在数字上画上一个红色的圆圈。
 
在dbgrid中ondrawcolumncell事件中写入
if ....条件 then begin
dbgrid1.canvas.brush.color:=clblue; //整条记录颜色
dbgrid1.canvas.font.color:=clblue; //字体颜色
dbgrid1.canvas.fillrect(rect);
dbgrid1.defauldrawcolumncell(rect,datacol,column,state);
end;
 
我觉得干脆用 DBGrid 的弹出式菜单最简单了,自己选择颜色即可。
 
>>自定义的类的属性为何不能赋值?
private
_Name:string;
published
property Name :string read _Name write _Name;
如果没有write就不能赋值
 
1.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

DBGrid1.Canvas.Font.Color := 产生随机数;

DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end

2.write
 
多人接受答案了。
 
后退
顶部