by
ru
en
by

Avemey

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

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

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

ZColorStringGrid sample скриншот ZColorStringGrid sample screenshot ZColorStringGrid sample screenshot
Скриншоты

zip zcolorstringgrid_bin_0_4.zip (1495Kb) - Исходный код + примеры в exe.
zip zcolorstringgrid_src_0_4.zip (462Kb) - Исходный код.

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 Выравнивание текста по вертикали
Rotate: integer Поворот текста в ячейке. По умолчанию 0.
IndentH: byte Отступ по горизонтали с той стороны, по которой установлено выравнивание. По умолчанию 2.
IndentV: byte Отступ по вертикали с той стороны, по которой установлено выравнивание. По умолчанию 0.
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-2012 Неборак Руслан Владимирович