Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 26 фев 2024, 14:59

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 11 ноя 2020, 06:42 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1543
Добрый день.

Хочу написать как реализовать отображение номера столбца в отдельной строке под заголовком в TDBGridEh

Реализация 1:

Установить рeжим MultiTitle
Код:
TDBGridEh.TitleParams.MultiTitle = True

и для каждого столбца добавить в текст заголовка номер через символ "|"

Код:
Column.Title.Caption = 'Name1|1'
Column.Title.Caption = 'Name2|2'


Реализация 2:
Написать наследник грида и реализовать свойство которое будет отображать строку с номерами автоматически

Вложение:
sshot-151.png
sshot-151.png [ 16.28 KiB | Просмотров: 8875 ]


Код:
{ TMyDBGridEh }

  TMyDBGridEh = class(TDBGridEh)
  private
    FUnderTitleColIndexes: Boolean;
    procedure SetUnderTitleColIndexes(const Value: Boolean);
  protected
    function GetTitleRows: Integer; override;
    procedure DrawTitleCell(ACol, ARow: Longint; AreaCol, AreaRow: Longint; ARect: TRect; AState: TGridDrawState; CellAreaType: TCellAreaTypeEh); override;
  public
    property UnderTitleColIndexes: Boolean read FUnderTitleColIndexes write SetUnderTitleColIndexes;
  end;

type
  TDBGridDrawTitleCellParamsEhCrack = class(TDBGridDrawTitleCellParamsEh);

{ TMyDBGridEh }

procedure TMyDBGridEh.DrawTitleCell(ACol, ARow, AreaCol, AreaRow: Longint;
  ARect: TRect; AState: TGridDrawState; CellAreaType: TCellAreaTypeEh);
var
  DrawColumn: TColumnEh;
  CelDrawSt: TDBGridDrawTitleCellParamsEhCrack;
begin
  if (UnderTitleColIndexes) and (ARow = GetTitleRows - 1) then
  begin
    DrawColumn := Columns[AreaCol];

    CelDrawSt := TDBGridDrawTitleCellParamsEhCrack(FTitleCellDrawState);
    CelDrawSt.FColumn := DrawColumn;
    CelDrawSt.FMultiTitleNode := nil;
    FillTitleCellDrawParams(ACol, ARow, AreaCol, AreaRow, ARect, AState,
      CellAreaType, CelDrawSt);
    DrawTitleCellBackground(Canvas, ARect, CelDrawSt);

    WriteTextEh(Canvas, ARect, False, 0, 0, DrawColumn.Index.ToString,
      taCenter, tlCenter, False, False, 0, 0, False, False);
  end else
  begin
    inherited DrawTitleCell(ACol, ARow, AreaCol, AreaRow, ARect, AState, CellAreaType);
  end;
end;

function TMyDBGridEh.GetTitleRows: Integer;
begin
  Result := inherited GetTitleRows;
  if UnderTitleColIndexes then
    Result := Result + 1;
end;

procedure TMyDBGridEh.SetUnderTitleColIndexes(const Value: Boolean);
begin
  if (FUnderTitleColIndexes <> Value) then
  begin
    FUnderTitleColIndexes := Value;
    LayoutChanged;
  end;
end;



Вложения:
2020-11-10-GridWithColumnIndexRow.zip [3.12 KiB]
Скачиваний: 406

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB