展开全部
有个问题是在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。 下面就是所创建组件的源程序 。 3、建立应用程序进行验证。 在Delphi文件菜单中选择New建立新的应用程序工程Project1和主窗体Form1,设置Form1的 Caption属性为“控制DBGrid行颜色的示例”。在主窗体上添加Data Source、Table、Button和 ColoredDBGrid组件。设置各组件的属性如下: Table1.Database=’DBDemos’ Table1.Tablename=’example.db’ Datasource1.Dataset=Table1 ColoredDBGrid1.Datasource=DataSource1 Button1.Caption=’退出’ 在ColoredDBGrid1的onDRawColoredDBGrid事件中输入下列代码,设定由Wage(工资)来决 定在ColoredDBGrid1各行的颜色。 procedure TForm1.ColoredDBGrid1 DRawColoredDBGrid (Sender: TObject; Field: TField; var Color: TColor; var Font: TFont); 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; //用‘退出’按钮结束程序运行。 procedure TForm1.Button1Click(Sender: TObject); begin Close; end; 是自定义的。。。。
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询