Использование компонента StringGrid

Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional.

Рис. 12.Компонент StringGrid

Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. В табл. перечислены некоторые свойства компонента StringGrid.

Таблица.Свойства компонента StringGrid

       
  Свойство Определяет  
  Name Имя компонента. Используется в программе для доступа к свойствам компонента  
       

 

       
  Свойство Определяет  
  ColCount Количество колонок таблицы  
  RowCount Количество строк таблицы  
  Cells Соответствующий таблице двумерный массив. Ячейка таблицы, находящаяся на пересечении столбца номер col и строки номер row определяется элементом cells [col, row]  
  FixedCols Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте  
  FixedRows Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте  
  Options . goEditing Признак допустимости редактирования содержимого ячеек таблицы. True — редактирование разрешено, False — запрещено  
  Options . goTab Разрешает (True) или запрещает (False) использование клавиши <Таb> для перемещения курсора в следующую ячейку таблицы  
  Options . GoAlways-ShowEditor Признак нахождения компонента в режиме редактирования. Если значение свойства False, то для того, чтобы в ячейке появился курсор, надо начать набирать текст, нажать клавишу <F2> или сделать щелчок мышью  
  DefaultColWidth Ширину колонок таблицы  
  DefaultRowHeight Высоту строк таблицы  
  GridLineWi-dth Ширину линий, ограничивающих ячейки таблицы  
  Left Расстояние от левой границы поля таблицы до левой границы формы  
  Top Расстояние от верхней границы поля таблицы до верхней границы формы  
  Height Высоту поля таблицы  
  Width Ширину поля таблицы  
  Font Шрифт, используемый для отображения содержимого ячеек таблицы  
  ParentFont Признак наследования характеристик шрифта формы  
       
       
         

TDrawGrid - произвольная таблица

Компонент TDrawGrid предоставляет программисту мощные возможности создания и обслуживания табличных структур данных. Он обеспечивает двухмерное представление данных, упорядоченных по столбцам и рядам, и избавляет программиста от многих рутинных аспектов, связанных с представлением и обслуживанием таблиц.

Чтобы таблица была работоспособной, в ней как минимум следует определить обработчик события OnDrawCell, которое возникает при необходимости прорисовать ту или иную ячейку. Для прорисовки используется табличное свойство Canvas.

Компонент TDrawGrid является непосредственным родителем строковой таблицы TStringGrid, поэтому передает ей все свои свойства, методы и события за исключением специфичных для строк свойств Cells, Cols, Objects И Rows. Поскольку порядок описания компонентов в этой главе соответствует умалчиваемому порядку их расположения на страницах палитры компонентов, TStringGrid описан раньше своего родителя TDrawGrid, и вы сможете найти информацию о свойствах, методах и событиях последнего в предыдущем параграфе.

В следующем примере компонент TDrawGrid используется для показа текста и картинок одновременно, причем текст можно редактировать. Картинки взяты из каталога images l splash | igcolor (рис. 14).

Рис. 14.Пример использования таблицы TDrawGrid для отображения картинок и текста

Если вы захотите повторить пример, следует сначала подготовить пустую форму главного окна. Дайте ей имя fmDrawGrid и вставьте в описание класса TfmDrawGrid такое поле:

Public

sIBitMap: TSringList;

Это поле будет использоваться для хранения текстовых строк и картинок. Его необходимо создать и наполнить в момент создания окна и уничтожить при его уничтожении. Поэтому создайте следующие Обработчики событий OnCreate и OnDestroy для формы:

procedureTfmDrawGrid.FormCreate(Sender: TObject);

// Создает и наполняет список sIBitMap

Const

FNames: array[0..3] of String= {Имена файлов с картинками} ('athena.bmp', 'construe.bmp', 'earth.bmp', 'technlgy.bmp');

Var

k: Integer;

Begin

// Создаем список строк:

sIBitMap := TStringList.Create;

// Вставляем в него названия файлов и картинки:

withsIBitMap do for k := 0 to 3 do

Begin

Add(FNames[k]) ;

Objects[k] := TBitMap.Create;

(Objects[k] as TBitMap).LoadFromFile(FNames[k])

end;

end;

procedureTfmDrawGrid.FormDestroy(Sender: TObject);

// Уничтожает список строк

Begin

sIBitMap.Free

end;

Обратите внимание: в именах файлов нет маршрута поиска, поэтому следует скопировать файлы, перечисленные в константе FNames, из каталога images | splash | 16 color в каталог для размещения ваших учебных программ и в этом же каталоге сохранить форму fmDrawGrid и проект под именем DrawGrid. После этого полезно осуществить прогон программы, чтобы убедиться в доступности файлов. Если при прогоне появится сообщение cannot open file, еще раз убедитесь в том, что файл drawgrid. exe создан в том же каталоге, в котором находятся вмр-файлы.

Поместите на пустую форму компонент TDrawGrid и установите для него следующие значения свойств:

Свойство Значение Комментарий
Align alClient Таблица занимает всю клиентскую часть окна
ColCount В таблице 2 колонки
FixedCols Нет фиксированных колонок
FixedRows Нет фиксированных рядов
Name dgDraw Имя таблицы
Options.goEditing True Разрешено редактирование текста
RowCount В таблице 2 строки
ScrollBars sbNone He надо вставлять полосы прокрутки

Теперь необходимо создать обработчики событий OnGetEditText, OnSetEditText иOnDrawCell. Два первых используются для редактирования текста, а обработчик OnDrawCell обязательно создается для любого компонента TDrawGrid, т. к. без него компонент не сможет заполнить пустые клетки каким-либо изображением или текстом.

procedureTfmDrawGrid.DrawGridlGetEditText(Sender: TObject;

ACol, ARow: Integer;

varValue: String) ;

// Передает редактору текст из ячейки

Begin

Value := slBitMap[2 * ACol + Arow]

end;

procedureTfmDrawGrid.DrawGridlSetEditText(Sentier: TObject;

ACol, ARow: Integer; constValue: String) ;

// Получает текст из редактора и сохраняет его в sIBitMap

Begin

slBitMap[2 * ACol + ARow] := Value

end;

procedureTfmDrawGrid.dgDrawDrawCell(Sender: TObject;

Col, Row: Integer; Rect: TRect; State: TGridDrawState) ;

// Рисует картинку из sIBitMap.Objects и текст из sIBitMap

Var

k: Integer;

Begin

// Пересчитываем координаты ячейки в индекс списка:

k := 2 * Col + Row;








Дата добавления: 2016-03-04; просмотров: 1316;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.