2016-11-21 44 views
1

我有一個TcxGrid組件來顯示SQL Server表的數據。 如何在CXGrid整數列中顯示圖片? 此列中的單元格只能是0或1.如何在CXGrid整數列中顯示圖片?

如果整數列單元格值= 0那麼; cximagelist.picture指數= 0 其他 cximagelist.picture指數= 1

enter image description here

+1

您可以嘗試ImageComboBox列並將所有項目的描述設置爲'''''。 –

回答

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; 

你也許可以做最上面的視覺與窗體設計器。

1

你可以做到這一點很簡單,如下:

  1. 添加列到網格顯示該圖像並將其Properties的值設置爲Image

  2. 在運行時,加載兩個位圖,BM1BM2以及要顯示的位圖。

  3. 將代碼添加到新列的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