"EhLib.Com" https://forum.ehlib.com/ru/ |
|
Грид с автоматическим отображением номера столбца в отдельно https://forum.ehlib.com/ru/viewtopic.php?f=4&t=3048 |
Страница 1 из 1 |
Автор: | EhLibSupport [ 11 ноя 2020, 06:42 ] | ||
Заголовок сообщения: | Грид с автоматическим отображением номера столбца в отдельно | ||
Добрый день. Хочу написать как реализовать отображение номера столбца в отдельной строке под заголовком в TDBGridEh Реализация 1: Установить рeжим MultiTitle Код: TDBGridEh.TitleParams.MultiTitle = True и для каждого столбца добавить в текст заголовка номер через символ "|" Код: Column.Title.Caption = 'Name1|1' Column.Title.Caption = 'Name2|2' Реализация 2: Написать наследник грида и реализовать свойство которое будет отображать строку с номерами автоматически Вложение: sshot-151.png [ 16.28 KiB | Просмотров: 8994 ] Код: { 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;
|
Страница 1 из 1 | Часовой пояс: UTC |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |