Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Отрисовка названий колонок в DBGrid


Автор: MaXL 19.3.2008, 09:52
Всем привет.
Есть DBGrid, необходимо добавить сортировку по полям, которые он отображает. Сортировку сделал, при нажатии на заголовки колонок. Теперь необходимо сделать так, чтобы рисовался треугольник, в заголовке колонок.
Перегрузка следующих методов DBGrid'а ничего не дала:
Код

procedure DirectoryDbGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure DirectoryDbGridDrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);

Как мне можно перехватить отрисовку именно заголовок колонок ?

Автор: Alix 19.3.2008, 17:29
попробуй так: допиши в начало твоего юнита следующее:
Код
type
  TDBGrid = class (DBGrids.TDBGrid)
  protected
    procedure DrawCell(ACol, ARow: Longint;
        ARect: TRect; AState: TGridDrawState); override;
  end;

а потом еще реализацию:
Код
{ TDBGrid }

procedure TDBGrid.DrawCell(ACol, ARow: Integer; ARect: TRect;
  AState: TGridDrawState);
begin
  inherited DrawCell(ACol, ARow, ARect, AState);
  if (ACol <> 0) and (ARow = 0) then begin
    Canvas.Brush.Color := clRed;
    Canvas.FillRect(arect);
  end;
end;

и в ней уже можешь делать что хочешь, треугольнички всегда рисовать или, если хочется, делать вызов OnDrawColumnState корректно заполнив все аргументы, а рисовать уже в событии согласно текущей сортировке.

Автор: MaXL 20.3.2008, 01:35
Alix, спасибо. Работает.
Вопрос решён!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)