![]() |
|
|
#1
|
|||
|
|||
|
Добрый день! Подскажите, пожалуйста, как можно использовать подстановку иконок в 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); |
|
#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; |