|
|
От: |
akasoft
|
|
| Дата: | 16.02.04 18:08 | ||
| Оценка: | |||
3.Изменение цвета строк компонента TGrid в режиме run-time в зависимости от данных в текущей записи нaбора данных.
Примечание: В данном примере SF_TYPE — внутренняя константа, ValueDesigner — переменная типа RECORD, содержащая нужные цвета.
Обрабатывается событие TGrid.onDrawColumnCell:
//------------------------------------------------------------------------------
Procedure TMainForm.GridBookDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
Begin
// Изменение цвета фонта записи
IF TDBGrid(Sender).DataSource.DataSet.FieldByName('OWNER_TYPE').AsInteger = SF_TYPE
Then TDBGrid(Sender).Canvas.Font.Color:=ValueDesigner.colorSimpleSF
Else TDBGrid(Sender).Canvas.Font.Color:=ValueDesigner.colorChildrenSF;
// Поправка для выделенной записи , иначе текст не будет автоматически подсвечен
IF (gdSelected in State) AND TDBGrid(Sender).Focused
Then TDBGrid(Sender).Canvas.Font.Color:=clHighLightText;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
// установка знака АКЦЕПТОВАНО в поле Sign
IF CompareText(Field.FieldName,'SIGN')=0
Then IF NOT TDBGrid(Sender).DataSource.DataSet.FieldByName('ACCEPT').IsNull
Then TDBGrid(Sender).Canvas.Draw(Rect.Left,Rect.Top,
AcceptBMP.Picture.Bitmap)
end;
//------------------------------------------------------------------------------