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

问题简介:

在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事件中添加如下代码:

[delphi]  view plain copy
  1. procedure TManageProjForm.DBGrid1DrawColumnCell(Sender: TObject;  
  2.   const Rect: TRect; DataCol: Integer; Column: TColumnEh;  
  3.   State: TGridDrawState);  
  4. var  
  5.    Icon:TBitmap;  
  6. begin  
  7.    if Column.DisplayName = 'ProjectStatus' then//'ProjectStatus' 为列名  
  8.   begin  
  9.     Icon:=TBitmap.Create;  
  10.     with TDBGridEh(Sender).Canvas do  
  11.     begin  
  12.       if adoQryFindProject.FieldByName('ProjectStatus').Value = 0 then  
  13.         img1.GetBitmap(0,Icon)  
  14.       else  
  15.         img1.GetBitmap(1,Icon);  //注意:一定要与imagelist中图片顺序一一对应,否则会张冠李戴,面目全非。  
  16.       Draw(round((Rect.Left+Rect.Right-Icon.Width)/2),Rect.Top,Icon);  
  17.     end;  
  18.     Icon.Free;  
  19.   end;  
  20. end;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值