![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цветной DBGrid [D7, XP]
deras © (2007-02-23 15:02:00)Читал статью "Разноцветный грид". Вроде понятно... кроме одного. Как задать условие для разрисовки. Например, если в поле "age", значение 10, то текст в строке сделать синим.
Ega23 (2007-02-23 15:08:00) [1]
procedure TFClassConfig.dbgCOMUnitsGetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
var
ds:TDataSet;
begin
if not (Sender is TDBGridEh) then Exit;
ds:=TDBGridEh(Sender).DataSource.DataSet;
if ds.IsEmpty then Exit;
if ANSIUpperCase(Column.FieldName)='COMMSKSTR' then
begin
if ds.FieldByName('COMMsk').AsInteger=0 then
AFont.Color:=clRed
else
AFont.Color:=clBlue;
end;
if ANSIUpperCase(Column.FieldName)='COMTYPNAM' then
begin
Case ds.FieldByName('COMTypCod').AsInteger of
10 : AFont.Color:=clGreen;
20 : AFont.Color:=clAqua;
30 : AFont.Color:=clBlue;
else AFont.Color:=clGray;
end;
end;
end;
Ученик чародея (2007-02-23 15:08:00) [2]DBGrid:
DefaultDrawing=False;
задать обработчик события
OnDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState)
Отрисовка через DbGrid.Canvas
Desdechado (2007-02-23 15:08:00) [3]
procedure TfrmPortNagr.gridNagrDrawColumnCell( Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState );
begin
with( gridNagr ) do
if( Enabled and ( not( gdFocused in State ) ) and
( Column.FieldName = 'CCONT' ) ) then
begin
if( qryPortNagr.FieldByName( 'NSTATUS' ).AsInteger = PS_RESERVED ) then
begin
Canvas.Brush.Color := clMoneyGreen;
Canvas.FillRect( Rect );
end
else if( qryPortNagr.FieldByName( 'NSTATUS' ).AsInteger in [ PS_NOTVALID, PS_EQUIPPED ] ) then
begin
Canvas.Brush.Color := clYellow;
Canvas.FillRect( Rect );
end;
DefaultDrawColumnCell( Rect, Column.Index, Column, State );
end;
end;