# Avemey

Файлы | Главная | Ссылки | Фотографии | Аниме

Компонент ZColorStringGrid.
(наследован от TStringGrid)
Из-за лени (надоело каждый раз в OnDrawCell писать код для выравнивания текста...) было решено доработать StringGrid для нужного поведения.
Протестировано на Delphi 5-7, Borland Developer Studio 2005, BDS 2006, CodeGear Delphi 2007, CodeGear RAD Studio 2009 и 2010.
Также заработало на C++ Builder 4-6 (и более поздних). Для Builder-а нужно заменить hpp.
Основные возможности:

- Выравнивание текста в ячейке по горизонтали и вертикали
- У каждой ячейки свой "стиль" (цвет фона, шрифт (стиль, цвет), рамка)
- Возможность объединения ячеек
- Многострочные ячейки (не только в фиксированных ячейках)
- Увеличение размера ячейки, если текст не помещается

Скриншоты

## TZColorStringGrid

Новые свойства:

Property | Краткое описание
CellStyle[ACol, ARow: integer]: TCellStyle | устанавливает стиль ячейки
CellStyleCol[ACol: integer; fixedRow: boolean]: TCellStyle | устанавливает стиль для столбца ACol - номер столбца fixedRow - устанавливать ли фиксированные ячейки (True - да) Write Only!
CellStyleRow[ARow: integer; fixedCol: boolean]: TCellStyle | устанавливает стиль для строки ARow - номер строки fixedCol - устанавливать ли фиксированные ячейки (True - да) Write Only!
MergeCells: TMergeCells | объединённые ячейки
ZInplaceEditor: TZInplaceEditor | внутренний редактор ячейки
DefaultCellStyle: TCellStyle | стиль ячейки по-умолчанию
DefaultFixedCellStyle: TCellStyle | стиль фиксированной ячейки по-умолчанию
LineDesign: TLineDesign | цвет линий
SelectedColors: TSelectColor | выделенные ячейки
SizingHeight: boolean | увеличивать высоту ячейки, если текст не помещается
SizingWidth: boolean | увеличивать длину ячейки, если текст не помещается
UseCellSizingHeight: boolean | если true - игнорирует SizingHeight, использует стиль ячейки
UseCellSizingWidth: boolean | если true - игнорирует SizingWidth, использует стиль ячейки
UseCellWordWrap: boolean | если true - игнорирует WordWrap, использует стиль ячейки
WordWrap: boolean | если текст не помещается в строке - перенос на следующую строку

Новый метод:

Метод | Краткое описание
procedure RowSelectYY(key: word); | Выделение строки если (goRowSelect in Options) при объединённых ячейках. Key - код нажатой клавиши (VK_UP или VK_DOWN).

Новые события:

Event | Краткое описание
OnBeforeTextDrawCell: TDrawCellEvent | Событие возникает до прорисовки текста в ячейке. (Если установить SetBkMode(CellHandle, TRANSPARENT), то текст не стирает фоновый рисунок...)
OnBeforeTextDrawMergeCell: TDrawMergeCellEvent | Событие возникает до прорисовки текста в объединённой ячейке
OnDrawMergeCell: TDrawMergeCellEvent | OnDrawCell, только для объединённых ячеек. Событие возникает после прорисовки текста.

## TCellStyle

Свойства TCellStyle | Краткое описание
BGColor: TColor | Цвет фона ячейки
BorderCellStyle: TBorderCellStyle | Стиль рамки ячейки
Font: Tfont | Шрифт
HorizontalAlignment: TAlignment | Выравнивание текста по горизонтали
SizingHeight: boolean | True - увеличивать длину ячейки, если текст не помещается.
SizingWidth: boolean | True - увеличивать высоту ячейки, если текст не помещается.
VerticalAlignment: TVerticalAlignment | Выравнивание текста по вертикали
WordWrap: boolean | Перенос слов

## TMergeCells

Стиль и текст в объединённой области (ячейке) берётся из левой верхней ячейки входящей в данную область.
Свойства:

Свойства TMergeCells | Краткое описание
Count: integer | Количество объединённых ячеек Read Only!
Items[Num: Integer]: TRect | Возвращает координаты объединённой области Num. (Left, Top) - левая верхняя ячейка, (Right, Bottom) - правая нижняя ячейка. Num - номер объединённой ячейки. Read Only!

Методы:

Методы TMergeCells | Краткое описание
function AddRect(Rct: TRect): byte; | Добавляет объединённую область/ячейку, заключённую прямоугольником Rct. Возвращает: 0 - всё нормально, область добавилась 1 - указанная область выходит за границы грида 2 - указанная область пересекается(входит) в введённые ранее области
3 - область из одной ячейки не добавляет
4 - попытка объединить фиксированные и не фиксированные ячейки
function AddRectXY(x1, y1, x2, y2: integer): byte; | Добавляет объединённую область/ячейку, заключённую прямоугольником (x1, y1, x2, y2). (x1, y1) - левая верхняя ячейка, (x2, y2) - правая нижняя ячейка. Возвращает тоже, что и AddRect(Rct: TRect).
procedure Clear(); | Удаляет все объединённые области/ячейки
function DeleteItem(num: integer): boolean; | Удаляет область num. Возвращает True если область успешно удалена.
function GetHeightArea(num: integer): integer; | Возвращает высоту объединённой области num с учётом линий между ячейками.
function GetWidthArea(num: integer): integer; | Возвращает длину объединённой области num с учётом линий между ячейками.
function GetSelectedArea(SetSelected: boolean): TGridRect; | Возвращает прямоугольник с выделенными ячейками, учитывает объединённые области. Используется для выбора нескольких ячеек (shift + курсорные клавиши). SetSelected, если True - Selection берёт полученный прямоугольник
function InLeftTopCorner(ACol, ARow: integer): integer; | Возвращает номер объединённой ячейки/области, в которой ячейка [ACol, ARow] является левой верхней. Если возвращает отрицательное значение - нет такой области.
function InMergeRange(ACol, ARow: integer): integer; | Возвращает номер объединённой ячейки/области, в которую входит ячейка [ACol, ARow]. Если возвращает отрицательное значение - ячейка [ACol, ARow] не содержится в Merge области.

## TLineDesign

Свойства:

Свойства TLineDesign | Краткое описание
LineColor: TColor | Цвет линий между ячейками
LineDownColor: TColor | Цвет линии для "объёмного" вида ячейки - тёмная линия. Используется если стиль рамки sgLowered или sgRaised
LineUpColor: TColor | Цвет линии для "объёмного" вида ячейки - светлая линия. Используется если стиль рамки sgLowered или sgRaised

## TSelectColor

Свойства:

Свойства TSelectColor | Краткое описание
BGColor: TColor | Цвет фона активной/выделенной ячейки
ColoredSelect: boolean | True - использовать цветную подсветку выделенной/активной ячейки False = not True
FontColor: TColor | Цвет шрифта в выделенной ячейке
UseFocusRect: boolean | True - ячейку с фокусом выделяет прямоугольником

## TDrawMergeCellEvent

type
TDrawMergeCellEvent = procedure (Sender: TObject; ACol, ARow: Longint; Rect: TRect; State: TGridDrawState; var CellCanvas: TCanvas) of object;
CellCanvas - холст ячейки.

## TBorderCellStyle

type
TBorderCellStyle = (sgLowered, sgRaised, sgNone);
sgLowered - "эдитор"
sgRaised - "кнопка"
sgNone - без рамки

## TVerticalAlignment

type
TVerticalAlignment = (vaTop, vaCenter, vaBottom);
vaTop - текст вверху ячейки
vaCenter - текст в центре
vaBottom - текст внизу ячейки

Файлы | Главная | Ссылки | Фотографии | Аниме

Copyright © 2006-2010 Неборак Руслан Владимирович