社区
数据库相关
帖子详情
如何让DBGRID以不同的颜色显示不同的记录?
qly_1314
2003-08-21 08:12:31
如何让DBGRID以不同的颜色显示不同的记录?
...全文
241
5
打赏
收藏
如何让DBGRID以不同的颜色显示不同的记录?
如何让DBGRID以不同的颜色显示不同的记录?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
IORILI
2003-08-21
打赏
举报
回复
在Delphi中随意控制DBGrid 每一行的颜色 :
在Delphi中使用DBGrid时,如何让DBGrid中每一行颜色按照用户自己的意愿控制。
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;
4、程序运行结果
本程序在win98(中文版)和delphi4.0(C/S版)中测试运行,得到预计的结果:第一行和第三行变为红色,第二行变为棕色,第四行为绿色,满足了基本要求
cobi
2003-08-21
打赏
举报
回复
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.AsInteger < 75 then begin
DBGrid1.Canvas.Font.Color := clWhite;
DBGrid1.Canvas.Brush.Color := clRed; //这里设置单元格填充色
DBGrid1.Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
end;
//输出内容
DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;
huojiehai
2003-08-21
打赏
举报
回复
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if Table1.FieldByName('Size').AsFloat > 10 then
begin
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.Canvas.brush.color := clBlue;
end;
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;
qly_1314
2003-08-21
打赏
举报
回复
cobi(我是小新)
怎样重画DBGRID的单元格,说清楚点好吗?
cobi
2003-08-21
打赏
举报
回复
自己根据需要重画dbgrid的单元格就可以了
速达式
DB
Grid
4、支持交替式的行
颜色
显示
。奇数行和偶数行可定义
不同
的
颜色
5、自适应宽度。
Grid
中的各列的宽度随
Grid
宽度的改变可自行调整宽度,使其始终填充整个
Grid
客户区域 6、回车键转换为制表键。可将回车键当作制表...
True
DB
Grid
for .NET-基于.NET的企业版网格控件
以下是一个实例: 复合
显示
模式以最实用的格式表示数据:标准Outlook样式分组,可以动态的排序网格列;分层数据
显示
提供了增强的Master-Detail
显示
以及完全可编辑的下拉视图;窗体视图可在需要能修改的标准“...
C++Builder精彩编程实例集锦的源代码(4,5,6部分).rar
实例131 如何以任意角度旋转
显示
图像 实例132 如何在桌面上
显示
图像 实例133 如何拷贝当前屏幕 实例134 如何打印图像文件 实例135 如何制作马赛克图像 实例136 如何实现图像中心扩散效果 实例137 如何实现图像...
delphi 开发经验技巧宝典源码
0015 以原始风格
显示
控件的滚动条 11 0016 使用快捷键打开对象观察器中的“...”按钮 11 1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目...
delphi 开发经验技巧宝典源码06
0015 以原始风格
显示
控件的滚动条 11 0016 使用快捷键打开对象观察器中的“...”按钮 11 1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目...
数据库相关
2,498
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章