20. Стандартные обработчики событий в компонентах

Для обеспечения нужного функционала некоторые события компонентов уже имеют обработчики. Например, событие табличной части OnDrawColumnCell используйте для раскраски и вывода миниатюр изображений. Если вы хотите добавить дополнительный функционал, то можете подменить стандартный обработчик на свой, предварительно сохранив старый в переменной. А в своем обработчике уже вызываете стандартный обработчик.

Пример:

var
  OldDrawCell: TDrawColumnCellEvent;
 
procedure MyDrawCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column:TColumn; State: TGridDrawState);
begin
  // Вызываем старый обработчик
  OldDrawCell(Sender, Rect, DataCol, Column, State);
  //
  if TdxGrid(Sender).GetFieldName(Column) = 'Количество' then 
  begin
    if Self.AsI['Количество'] < 0 then 
      TdxGrid(Sender).Canvas.Brush.Color := clRed;
  end;
end;
 
procedure Form_Create;
begin
  OldDrawCell := Self.Grid.OnDrawColumnCell; 
  Self.Grid.OnDrawColumnCell := @MyDrawCell;
end;

В данном примере раскрашиваем ячейки колонки «Количество» с отрицательным значением. Ниже приведены компоненты и события, которые заняты программой.

Компонент События
TdxGrid OnCellClick, OnDblClick, OnDrawColumnCell, OnKeyDown
TdxLookupComboBox Button.OnClick
TdxCalcEdit, TdxDateEdit, TdxTimeEdit, TdxMemo Button.OnClick
TdxQueryGrid OnDblClick, OnDrawColumnCell
PopupMenu OnPopup