关于HubDog的葵花宝典(100分)

  • 主题发起人 主题发起人 fanhongwei
  • 开始时间 开始时间
F

fanhongwei

Unregistered / Unconfirmed
GUEST, unregistred user!
---- 有个问题是在Delphi中使用DBGrid时,
如何让DBGrid中每一行颜色按照用户自己的意愿控制。最初看到这个问题时,
我们以为非常非常简单,所以马上动手准备解决它。结果却发现不是那么回事,
传统方法根本不能发挥作用。在电脑面前一直坐到凌晨4点,不断地调试,幸运地
是凭借平时积累的一点编程经验,终于找到了开门的匙钥。现将它充公,供大家享用。

---- 1、 数据表的建立

---- 在Delphi的工具菜单中选择Database desktop,在数据库DBDemos下建立一个
名为example.db的数据表。数据表的字段和内容如下:


Name Age Wage
张山 25 500
王武 57 1060
李市 30 520
刘牛 28 390

---- 2、创建基于TDBGrid的TColoredDBGrid组件
---- 在Delphi组件菜单中,选择New Component,在弹出对话框中作以下设置:

Ancestor Type = TDBGrid
Class Name = TColoredDBGrid

---- 然后单击OK按钮,Delphi自动完成组件基本框架的定义。
增添OnDRawColoredDBGrid事件并使它出现在Object Inspector的Events中以便在应用程序
中设定改变行颜色的条件。重载DrawCell方法,只能自己绘制单元格。
不能通过在OnDrawColumnCell来设置颜色,因为在OnDrawColumnCell改变单元格的颜色会
再次触发OnDrawColumnCell。
---- 下面就是所创建组件的源程序 。

可是在他的葵花宝典中没有创建组件的源程序!
谁可以提供创建组件的源程序,或者请告诉我应该如何做
 
或者告诉我如何改变DBGrid中每一行的颜色(根据不同的条件)
 
我记得这个问题在DFW 已经讨论过了,你可以查查以前的讨论
 
那位高手可以告诉我如何作
 
我找不到以前的帖子
 
用控件infoPower,问题很简单.
它专门有一个Demo讲这个功能的,我的MRPII中很早就用到了.
 
在DBGrid的OnDrawDataCell事件中进行处理不就完了?
有什么难的?
 
我觉得很好呀,提供了好多技巧。
 
请问在哪里可以下载葵花宝典。
 
delphi.mychangshu.com
 
代码实例
procedure TForm1.DBGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
{
if Query1.FieldByName('Col1').AsString <> '' then
if (gdSelected in State) and (DBGrid1.Focused = True) then
DBGrid1.Canvas.Font.Color := clWhite
else
DBGrid1.Canvas.Font.Color := clTeal;
}
if query1.FieldByName('Col1').AsString <> '' then
dbgrid1.Canvas.Brush.Color := $00E0FFFF
else
dbgrid1.Canvas.Brush.Color := clWhite;

if ((gdSelected in State) and (gdFocused in State)) then
begin
dbgrid1.Canvas.Brush.Color := clNavy;
dbgrid1.Canvas.Font.Color := clWhite;
end;

dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
 
多人接受答案了。
 
后退
顶部