我有一个TcxGrid组件来显示SQL Server表的数据。 如何在CXGrid整数列中显示图片? 此列中的单元格只能是0或1。
如果整数列单元格值= 0则; cximagelist.picture index = 0 其他 cximagelist.picture index = 1
答案 0 :(得分:1)
您可以非常简单地执行此操作,如下所示:
在网格中添加一列以显示图片并将其Properties
值设置为Image
在运行时,使用您要显示的位图加载两个位图,BM1
和BM2
。
将代码添加到新列OnCustomDrawCell
,如下所示。
代码:
procedure TForm1.cxGrid1DBTableView1Column1CustomDrawCell(Sender:
TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo:
TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
BM : TBitMap;
ARect : TRect;
I : Integer;
begin
ARect := AViewInfo.Bounds;
// In the next line, 2 is the index of my integer column which
// contains the value which deterimnes the image to display.
I := AViewInfo.GridRecord.Values[2];
if I = 0 then
BM := BM1
else
BM := BM2;
ACanvas.Draw(ARect.Left, ARect.Top, BM);
ADone := True;
end;
当然,如果您不想在网格中显示整数字段的值,则只需删除其列或将其Visible
属性设置为False
即可。
答案 1 :(得分:0)
您可以尝试使用ImageComboBox列:
procedure Test(ACol: TcxGridColumn);
var
props: TcxImageComboBoxProperties;
i: Integer;
item: TcxImageComboBoxItem;
begin
ACol.PropertiesClass := TcxImageComboBoxProperties;
Assert(ACol.Properties is TcxImageComboBoxProperties);
props := TcxImageComboBoxProperties(ACol.Properties);
props.Images := YourImages;
for i in PossibleIndices do
begin
item := props.Items.Add;
item.Description := ''; // or IntToStr(i)
item.Value := i;
if i = 0 then
item.ImageIndex := 0
else
item.ImageIndex := 1;
end;
end;
您可以使用表单设计器直观地完成上述大部分操作。