您的位置:首页 > 编程语言 > Delphi

Delphi DBGRID中 根据不同的字段值显示不同的小图标

2011-09-07 19:58 399 查看
问题简介:

在DBGRID中显示图片,或者根据不同的字段值显示不用的小图片,有两种方法:

1>、使用DBGridEH设置相应的属性;

2>、使用代码,自己在DrawColumnCell事件中进行重画;

1 、使用DBGridEH设置相应的属性

在数据单元格中显示不用的图片,具体设置如下:

<a>、添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。

<b>、然后将需要显示图片的列的imagelist属性设置为img1;

<c>、在keylist属性中添加实际数据存储值,一行为一个值,

注意:一定要与imagelist中图片顺序一一对应,否则会张冠李戴,面目全非。

<d>、还可在picklist中添加提示信息,也要求是一行为一个值,

<e>、并设tooltip为true,那么,运行时当鼠标移动到该数据单元格时在显示图片的同时还显示提示信息,

怎么样,功能够强大吧!可使用空格键或鼠标切换下一张图片,图片切换的同时也改变了实际存

储数据值。也可通过shift+空格或鼠标切换为上一张图片。这样就实现了上下两个方向图片切换。

2.使用代码,自己在DrawColumnCell事件中进行重画

1>.添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。

2>.在DBGRID控件的DrawColumnCell事件中添加如下代码:

procedure TManageProjForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
Icon:TBitmap;
begin
if Column.DisplayName = 'ProjectStatus' then//'ProjectStatus' 为列名
begin
Icon:=TBitmap.Create;
with TDBGridEh(Sender).Canvas do
begin
if adoQryFindProject.FieldByName('ProjectStatus').Value = 0 then
img1.GetBitmap(0,Icon)
else
img1.GetBitmap(1,Icon);  //注意:一定要与imagelist中图片顺序一一对应,否则会张冠李戴,面目全非。
Draw(round((Rect.Left+Rect.Right-Icon.Width)/2),Rect.Top,Icon);
end;
Icon.Free;
end;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: