如何在DBGrid中显示图标?(100分)

  • 主题发起人 主题发起人 吉花
  • 开始时间 开始时间

吉花

Unregistered / Unconfirmed
GUEST, unregistred user!
用DBGrid显示一张表,需要根据表中某一字段(如性别字段)的值
(如男、女)来分别显示一个男人/女人的头像。如何做到?
我记得在某一本书中有这方面的解答,但记不清书名了。
请专家解答,最好有例子。
 
给你一个控件吧
<a href='http://vcl.vclxx.com/DELPHI/D32FREE/BSDBGRD2.ZIP'>BSDBGRD2.ZIP </a>
改良版的 TDBGrid 构件,提供立体 3D 外观,并能够显示 .BMP 图像的数据字段,当格子内文字过长
时可以自动折行等多项功能 ( 2.0 版,附源码 ) ,作者 : Eddie Bond。

有源码,自己看吧。
 
用infopower空间组

除了你要的功能外,还有不少吸引人的地方
 
<delphi3高级开发指南>中有详解。
 
一、BSDBGRD这个控件有没有较详细的使用范例?
它提供的信息太少了。
二、infopower这个控件组是run-time library的,我试着装了一下,
没有成功,有没有design-time 版的?
三、除了以上两种还有没有其他控件了?
 
TDBGrid.OnDrawDataCell/TDBGrid.OnDrawColumnCell
 

infopower我用的很好,没什么问题

换个版本试试看,网上很多地方可以下载
 
From: sraike@iconz.co.nz (Bill Raike)

I've had second thoughts and decided to post my DBGrid descendant that shows images, since it's such a small amount of code.
Here it is:



--------------------------------------------------------------------------------

{
// DBPICGRD.PAS (C) 1995 W. Raike
// ALL RIGHTS RESERVED.
//
// DESCRIPTION:
// Data-aware grid that can display graphic fields.
// REVISION HISTORY:
// 15/04/95 Created. W. Raike
}

unit DBPicGrd;

interface

uses
DBGrids, DB, DBTables, Grids, WinTypes, Classes, Graphics;

type
TDBPicGrid = class(TDBGrid)
protected
procedure DrawDataCell(const Rect: TRect;
Field: TField; State: TGridDrawState); override;
public
constructor Create(AOwner : TComponent); override;
published
property DefaultDrawing default False;
end;

procedure Register;

implementation

constructor TDBPicGrid.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
DefaultDrawing := False;
end;

procedure TDBPicGrid.DrawDataCell(const Rect: TRect; Field: TField;
State: TGridDrawState);
var
bmp : TBitmap;
begin
with Canvas do
begin
FillRect(Rect);
if Field is TGraphicField then
try
bmp := TBitmap.Create;
bmp.Assign(Field);
Draw(Rect.Left, Rect.Top, bmp);
finally
bmp.Free;
end
else
TextOut(Rect.Left, Rect.Top, Field.Text);
end;
end;

procedure Register;
begin
RegisterComponents('Custom', [TDBPicGrid]);
end;

end.
 
多人接受答案了。
 
后退
顶部