Delphi 6 программирование

Определяет рамку компонента: bsNone нет



Свойства компонента:



property BorderStyle: TBorderStyle; Определяет рамку компонента: bsNone нет рамки; bsSingle - рамка толщиной 1 пиксель
property Cells[ACol, ARow: Integer] :String; Определяет содержимое ячейки с табличными координатами (ACol, ARow)
property Col: Longint; Содержит номер столбца сфокусированной ячейки
property ColCount: Longing- Содержит количество столбцов таблицы
property Cols[Index: Integer]: TStrings;
Содержит все строки колонки с индексом Index
property ColWidths[Index: Longint] : Integer; Содержит ширину столбца с индексом Index
property DefaultColWidth: Integers; Содержит умалчиваемое значение ширины столбца
property DefaultDrawing: Boolean; Разрешает/запрещает автоматическую прорисовку служебных элементов таблицы - фиксированной зоны, фона и прямоугольника сфокусированной ячейки и т. п.
property DefaultRowHeight: Integers; Содержит умалчиваемую высоту рядов
property EditorMode: Boolean; Разрешает/запрещает редактирование ячеек. гнорируется, если свойство Options включает goAlwayseShowEditor или не включает goEditing
property FixedColor: TColor; Определяет цвет фиксированной зоны
property FixedCois: Integers; Определяет количество столбцов фиксированной зоны
property FixedRows: Integers; Определяет количество рядов фиксированной зоны
property GridHeight: Integers; Содержит высоту таблицы
property GridLineWidth: Integers; Определяет толщину линий, расчерчивающих таблицу
property GridWidth: Integers; Содержит ширину таблицы
property LeftCol: Longint; Содержит номер самого левого столбца, видимого в зоне прокрутки
property Objects [ACols ARow: Integer] : TObject; Обеспечивает доступ к объекту, связанному с ячейкой (ACol, ARow)
property Options: TGridOptions; Содержит параметры таблицы (см. ниже)
property Row: Longing; Содержит номер ряда сфокусированной ячейки
property RowCount: Longint; Содержит количество рядов таблицы
property RowHeights[Index: Long int] : Integer; Содержит высоту ряда с индексом index
property Rows[Index: Integer]: TStrings; Содержит все строки ряда с индексом Index
type TScrollStyle = (ssNone, ssHorizontal, ssVertical,
ssBoth) ;
Определяет полосы прокрутки: ssNone -нет полос; ssHorizontal - в таблицу вставляется горизонтальная полоса;
property ScrollBars: TScroll Style;
ssVertical - вставляется вертикальная полоса; ssBoth - вставляются обе полосы
TGridRect = record case Integer of
0: (Left,Top,Right,Bottom: Long int) ;
1: (TopLeft,
BottomRight: TGridCoord) ;
end;
Определяет группу выделенных ячеек в координатах левая верхняя и правая
нижняя ячейки(нумерация столбцов и рядов идет от нуля, включая столбцы и
ряды фиксированной зоны). После выделения сфокусированной окажется правая нижняя ячейка
property Selection: TGridRect; property TabStops[Index: Long int] : Boolean;
Разрешает/запрещает выбирать столбец с индексом index при обходе ячеек клавишей Tab. Игнорируется, если Options не содержит goTabs
property TopRow: Longint; Содержит номер самого верхнего ряда, видимого в прокручиваемой зоне ячеек
property VisibleColCount: Integer; Содержит количество столбцов, полностью видимых в зоне прокрутки
property VisibleRowCount: Integer; Содержит количество рядов, полностью видимых в зоне прокрутки
Для компонента определен тип TGridOptions:
type
TGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking);
TGridOptions = set of TGridOptions;
Элементы множества TGridOptions имеют следующий смысл:
goFixedVertLine Столбцы фиксированной зоны разделяются вертикальными линиями
goFixedHorzLine Ряды фиксированной зоны разделяются горизонтальными линиями
goVertLine Столбцы рабочей зоны разделяются вертикальными линиями
goHorzLine Ряды рабочей зоны разделяются горизонтальными линиями
goRangeSelect Разрешено выделение нескольких ячеек. Игнорируется, если включен элемент goEdit
goDrawFocus Selected Разрешено выделять сфокусированную ячейку так же, как выделенные
goRowSizing goColSizing goRowMoviog Разрешено ручное (мышью) изменение высоты строк Разрешено ручное изменение ширины рядов Разрешено ручное перемещение рядов (нажать левую кнопку мыши на фиксированной ячейке перемещаемого ряда и, удерживая кнопку нажатой, переместить ряд на новое место)
goColMoving goEditing Разрешено ручное перемещение столбца Разрешено редактирование ячейки. Игнорируется, если включен элемент goRowSelect. Редактирование начинается после щелчка мыши или нажатия клавиши F2 и завершается при щелчке по другой ячейке или нажатии клавиши Enter
goTabs goRowSelect Разрешено обходить ячейки клавишей Tab (Shift+Tab) Обязывает выделять сразу все ячейки ряда и запрещает редактирование ячеек Разрешено редактировать сфокусированную ячейку: редактирование возможно после выбора ячейки клавишей Tab (Shift+Tab). Игнорируется, если не включен элемент goEditing
goAlwaysShowEditorgoThumbTracking Разрешено обновление при прокрутке. Если этот элемент отсутствует, обновление ячеек произойдет только после окончания прокрутки
Два метода класса могут оказаться полезными для процедуры прорисовки:
function CellRect(ACol, ARow: TRect; Longint): Возвращает прямоугольник ячейки по номерам столбца ACol и ряда Arow
procedure MouseToCell(X, Y: Integer; var ACol, ARow: Longint); Возвращает табличные координаты ячейки ACol и arow по экранным координатам(X,У)точки
Остальные методы рассчитаны на перекрытие в потомках и представляют интерес для разработчиков новых компонентов. Для программистов-пользователей важны следующие доступные компоненту события:
TMovedEvent = procedure (Sender: TObject; Fromlndex, Tolndex: Longint) of object; property OnColumnMoved: TMovedEvent; TDrawCellEvent; Возникает при перемещении столбца с индексом Fromlndex в положение, определяемое индексом ToIndex
TGridDrawState = set of (gdSelected, gdFocused, gdFixed) ; TDrawCellEvent = procedure (Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState) of object-property OnDrawCell: Возникает при необходимости перерисовать ячейку с табличными координатами (Col, Row): Rect - прямоугольник прорисовки; State - состояние ячейки (gdSelected -ячейка выделена; gdFocused - ячейка сфокусирована; gdFixed - ячейка принадлежит фиксированной зоне таблицы). Для прорисовки используется табличное свойство Canvas
GetEditEvent = procedure (Sender: TObject; ACol, ARow:
Возникает при редактировании текста в ячейке с табличными координатами
Longint; var Value: String) ofobject; property OnGetEditMask: TGetE
ditEvent;
(ACol.ARow). В параметре value обработчик должен вернуть шаблон для редактора TeditMask
property OnGetEditText: TGetE ditEvent;
Возникает при редактировании текста в ячейке с табличными координатами (ACol.ARow). В параметре value обработчик должен вернуть текст для редактора TEditMask (см. событие OmGetEditMask)
property OnRowMoved: TMovedEvent; Возникает при перемещении ряда с индексом Fromindex в положение, определяемое индексом ToIndex (см. событие onColMoved)
SelectCellEvent = procedure (Sender: TObject; Col, Row: Long int; var CanSelect: Boolean) of object; property OnSelectCell: TSe lectCellEvent;
Возникает при попытке выделить ячейку с табличными координатами (col.Row). В параметре CanSelect обработчик сообщает о возможности выделения ячейки
TSetEditEvent = procedure (Sender: TObject; ACol, ARow:
Longint; const Value: String) of
object;
property OnSetEditText: TSetEditEvent;
Возникает при завершении редактирования ячейки (ACol.ARow). В параметре value
обработчик получает результат ввода или
редактирования текста
property OnTopLeftChanged: TNotifyEvent; Возникает после изменения значения ТоpRow или LeftCol в результате прокрутки рабочей зоны
В следующем примере компонент TStringGrid используется для показа всех слов из произвольного текстового файла (Рисунок 18.10).
  • Назовите пустую форму именем fmStGrid и положите на нее панель TPanel.
  • Установите в свойство панели Align значение alBottom, чтобы панель всегда занимала самую нижнюю часть окна, и удалите текст в ее свойстве caption.
  • Поместите на панель кнопку TBitBtn, установите в ее свойство
Caption строку Открыть файл..., загрузите в свойство Glyph файл images | buttons | FILE OPEN.BMP и растяните кнопку по горизонтали так, чтобы надпись и пиктограмма полностью умещались на ее поверхности.

Содержание раздела