Файлы
Главная
Ссылки
Фотографии
Anime


Сайт переехал: http://avemey.com


Компонент ZColorStringGrid.
(наследован от TStringGrid)

Из-за лени (надоело каждый раз в OnDrawCell писать код для выравнивания текста...) было решено доработать StringGrid для нужного поведения.
Протестировано на Delphi 5, Delphi 7 и BDS 2006.

Основные возможности:
ZColorStringGrid sample скриншот
ZColorStringGrid sample screenshot
ZColorStringGrid sample screenshot
Скриншоты

zcolorstringgrid_bin_0_1.rar (467Kb) - Исходный код + примеры в exe.
zcolorstringgrid_src_0_1.rar (126Kb) - Исходный код.

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 - текст внизу ячейки


(c) 2008 Неборак Руслан

Мой счетчик Каталог TUT.BY Rating All.BY

Сайт создан в системе uCoz