Советы по Delphi

         

Dbgrid с цветными ячейками IV


Nomadic советует:

Hапример, так:

    DefaultDrawing:=False;
....
procedure
TfrmCard.GridDrawColumnCell(Sender: TObject; constRect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); var
Index : Integer; Marked, Selected: Boolean; begin



Marked := False; if (dgMultiSelect in Grid.Options) and THackDBGrid(Grid).Datalink.Active then Marked:=Grid.SelectedRows.Find(THackDBGrid(Grid).Datalink.Datasource.Dataset.Bookmark,Index);
Selected := THackDBGrid(Grid).Datalink.Active and (Grid.Row-1 = THackDBGrid(Grid).Datalink.ActiveRecord);
if Marked then begin Grid.Canvas.Brush.Color:=$DFEFDF; Grid.Canvas.Font.Color :=clBlack; end;
if Selected then begin Grid.Canvas.Brush.Color:=$FFFBF0; Grid.Canvas.Font.Color :=clBlack; if Marked then Grid.Canvas.Brush.Color:=$EFE3DF; { $8F8A30 } end;
Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;

где

    THackDBGrid = class(TDBGrid)
property DataLink; property UpdateLock; end;

Обратите внимание на обьявление класса THackDBGrid. Таким образом можно получить доступ к приватным полям, свойствам и методам класса, что, к сожалению, приходится делать, если авторы исходного класса оказались не предусмотрительны. [001138]



Содержание раздела