|
#1
|
|||
|
|||
cxGrid + иконка
Добрый день! Подскажите, пожалуйста, как можно использовать подстановку иконок в cxGrid для определенного значения в ячейке.
И вообще есть ли возможность в одной ячейке выводить значение ячейки + иконка или нужно создавать дополнительное поле? Необходимо сделать следующее: Код:
procedure TForm.NameCellCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if cxGridDBBandedTableView1Name.DataBinding.DataController.DataSet.FieldByName('TEMP_OPEN').Value < 1 then 'показывать icon1'; end; |
#2
|
|||
|
|||
Разобралась. Теперь бы еще вместе с иконкой данные выводить...
Код:
procedure TAnalysisOfTrans.cxGridDBBandedTableViewCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); Var r : TRect; iImageIndex : Integer ; begin If (TcxGridDBBandedColumn(AViewInfo.Item) = cxGridDBBandedTableViewTEMP_OPEN) then Begin If (AViewInfo.GridRecord.Values[cxGridDBBandedTableViewTEMP_OPEN.Index] > 0) Then Begin iImageIndex := 0 ; End; If (AViewInfo.GridRecord.Values[cxGridDBBandedTableViewTEMP_OPEN.Index] < 0) Then Begin iImageIndex := 1 ; End; If (AViewInfo.GridRecord.Values[cxGridDBBandedTableViewTEMP_OPEN.Index] = 0) Then Begin iImageIndex := 2 ; End; R := AViewInfo.Bounds ; ACanvas.Brush.Color := AViewInfo.Params.Color; ACanvas.FillRect(R); // draw the image. R := AViewInfo.Bounds ; Inc(r.Top,1); ACanvas.DrawImage(ImageList1,r.Left,r.Top,iImageIndex,True); ADone := True ; End; end; |
#3
|
||||
|
||||
Попробуй закомментировать эту часть кода:
Код:
R := AViewInfo.Bounds ; ACanvas.Brush.Color := AViewInfo.Params.Color; ACanvas.FillRect(R); Google в помощь |
#4
|
|||
|
|||
Тема закрыта.
Код:
procedure TAnalysisOfTrans.cxGridDBBandedTableViewCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); Var r : TRect; iImageIndex, iVal : Integer; sVal :string; begin If (TcxGridDBBandedColumn(AViewInfo.Item) = cxGridDBBandedTableViewTEMP_OPEN) then Begin iVal:= AViewInfo.GridRecord.Values[cxGridDBBandedTableViewTEMP_OPEN.Index]; If (iVal > 0) Then Begin iImageIndex := 0 ; End; If (iVal < 0) Then Begin iImageIndex := 1 ; End; If (iVal = 0) Then Begin iImageIndex := 2 ; End; R := AViewInfo.Bounds ; ACanvas.Brush.Color := AViewInfo.Params.Color; ACanvas.FillRect(R); // Draw the number left justified in the cell. Inc(r.Left,1); sVal := IntToStr(iVal); ACanvas.DrawTexT(sVal,r,cxAlignLeft or cxAlignVCenter); // draw the image right justified in the cell. // this assmues that the image is 16 x 16 pixles. R.Left := (R.Right - 16); Inc(r.Top,1); ACanvas.DrawImage(ImageList1,r.Left,r.Top,iImageIndex,True); ADone := True ; End; end; |