以前是用Dev的cxgrid可以很方便地根据数据库里某个字段值显示ImgList里的图片,但现在由于要做三层,三层里的主从表不太好控制,所以改由非感知表格控件。
把imagelist里面的图片通过getbitmap,保存到一个TBItMap变量中,然后利用stringgrid的canvas属性,draw到相应的cell当中。当然,代码要在stringgrid的onDrawCell事件中处理。代码:
procedure TFrmMain.RzStringGrid1DrawCell(Sender: TObject; ACol, ARow:Integer; Rect: TRect; State: TGridDrawState);
var bitmap: TBitmap;
begin
bitmap := TBitmap.Create;
try
with RzStringGrid1 do
begin 添加判断条件,获取不同的bitmap显示
ilImages.GetBitmap(267, bitmap);
if not bitmap.Empty then
Canvas.Draw(Rect.Left, Rect.Top, bitmap);
end;
finally
bitmap.Free;
end;
end;
代码很简单,主要就是getbitmap和canvas.draw的使用,注意TBitMap的创建和释放。