Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
В.Д. Боев, Р.П. Сыпченко.docx
Скачиваний:
179
Добавлен:
19.09.2019
Размер:
7.07 Mб
Скачать

8.3.3. Добавление компонент для ввода и вывода данных, представленных в виде таблиц

Среднее время разгрузки одного автомобиля различных типов представлено табл. 8.1. Компонент StringGrid (Строковая таблица) используется для отображения информации в виде таблицы. Таблица представляет собой набор ячеек, расположенных в строках и столбцах. Ее содержимое задается двумерным массивом.

Значок компонента StringGrid находится на дополнительной (Additional) странице палитры компонентов. В разрабатываемую форму имитационной модели необходимо добавить два компонента. Один компонент для ввода табл. 8.1. В данной модели результаты моделирования целесообразно вывести таблицей. Поэтому нужен второй компонент StringGrid. Добавьте два компонента. Добавляются они также, как и другие компоненты.

Добавленные компоненты StringGrid имеют стандартные свойства. Delphi предоставляет разработчику возможность изменить эти свойства после добавления компонентов в форму.

В табл. 8.6 перечислены основные свойства компонента StringGrid.

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

Свойство

Описание

Name

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

ColCount

Количество колонок таблицы

RowCount

Количество строк таблицы

Cells

Соответствующий таблице двумерный строковый массив. Если строки и столбцы нумеровать с нуля, то ячейке Cells соответствует Cells(i,j)

FixedCols

Количество зафиксированных слева столбцов таблицы. Они выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте

FixedRows

Количество зафиксированных сверху строк таблицы. Они выделяются цветом и при вертикальной прокрутке таблицы остаются на месте

Options

Свойство используется для задания других атрибутов таблицы (табл. 8.7)

DefaultColWidth

Ширина столбцов таблицы

DefaultRowHeight

Высота строк таблицы

GridLineWidth

Ширина линий, ограничивающих ячейки таблицы

Left

Расстояние от левой границы поля таблицы до левой границы формы

Top

Расстояние от верхней границы поля таблицы до верхней границы формы

Height

Высота поля таблицы

Width

Ширина поля таблицы

Font

Шрифт, используемый для отображения содержимого ячеек таблицы

ParentFont

Признак наследования характеристик шрифта формы

Из всех свойств следует обратить внимание на свойство Options. Свойство Options используется для задания многих атрибутов таблицы (компонента StringGrid), которые описаны в табл. 8.7. На вкладке, показанной на рис. 8.10, перед свойством Options стоит знак "+". При двойном нажатии на него появляется вкладка с вложенными свойствами свойства Options (рис. 8.10).

Таблица 8.7. Атрибуты таблицы, задаваемые свойством Options

Атрибут

Описание (для значения True)

goFixedHorzLine

Горизонтальные линии фиксированы

goFixedVertLine

Вертикальные линии фиксированы

goHorzLine

Горизонтальные разделительные линии отображаются

goVertLine

Вертикальные разделительные линии отображаются

goRangeSelect

Можно выбирать несколько ячеек

goDrawFocusSelected

Текущая ячейка помечается цветом

goRowSizing

Возможно изменение размеров строк

goColSizing

Возможно изменение размеров столбцов

goRowMoving

Возможно перемещение строк

goColMoving

Возможно перемещение столбцов

goEditing

Возможно редактирование содержимого ячеек

goTabs

Возможно перемещение по ячейкам клавишами Tab и Shift-Tab

goThumbTracking

Содержимое таблицы скроллируется с помощью полос прокрутки

Свойства, перечисленные в табл. 8.6 и табл. 8.7, после выделения (маркирования) соответствующей таблицы устанавливаются либо заданием какого - то числового значения, либо выбором True или False (рис. 8.10).

Для ввода данных табл. 8.1 необходимо изменить некоторые из свойств StringGrid. Например, для того, чтобы была возможность редактировать содержимое ячеек таблиц, нужно установить свойство goEditing True, а для перемещения курсора с помощью клавиш Tab и стрелок - свойство goTabs также установить True.

В табл. 8.8 приведены значения свойств обеих компонентов StringGrid, используемых моделью для ввода и вывода данных. Установите эти значения. Форма должна иметь вид, показанный на рис. 8.11. Введите также метки Label9 и Label10 (см. рис. 8.11).

Рис. 8.10.  Вкладка свойства Options

Таблица 8.8. Значения свойств компонента StringGrid1

Свойство

Компоненты

1

2

Name

Tabl1

Tabl2

ColCount

11

11

RowCount

2

5

FixedCols

1

1

FixedRows

1

1

Options.goEditing

True

True

Options.goTabs

True

True

DefaultColWidth

70

125

DefaultRowHeight

24

24

GridLineWidth

1

1

goRowSizing

True

True

Рис. 8.11.  Вид формы после добавления компонентов StringGrid

Первая строка и первый столбец таблиц зафиксированы (см. рис. 8.11). Они используются в качестве заголовков таблиц. В рассматриваемом примере в первой строке первой таблицы это тип автомобиля (номера 1 … 10), во второй таблице - пункты выгрузки (также номера 1 … 10). Следует отметить, что можно было бы ввести в эти ячейки и наименования вместо порядковых номеров. Как это делается, покажем на примере ввода поясняющего текста в строки таблиц. Во вторую строку первой таблицы - Cells(0, 1) - введем: Время, мин. Во вторую таблицу: Cells(0, 1) - Коэф. загр.; Cells(0, 2) - Ср. время; Cells(0, 3) - Макс. очер. Во время создания формы имитационной модели установить значения элементов Cells таблицы нельзя, так как элементы таблицы доступны только во время работы программы. Поэтому значения элементов Cellsтаблицы, соответствующие первой строке и первому столбцу обеих та блиц устанавливают процедуры FormActivate1 и FormActivate2 (текст их приведен ниже) во время активизации формы. В какой процедуре обработки события производится вызов указанных процедур, укажем позже.

procedure TForm1.FormActivate1(Sender: TObject);

var n1:integer;

begin

for n1:=1 to Tabl1.ColCount do

Tabl1.Cells[n1,0]:=IntToStr(n1);

Tabl1.Cells[0,1]:='Время, мин';

end;

procedure TForm1.FormActivate2(Sender: TObject);

var n1:integer;

begin

for n1:=1 to Tabl2.ColCount do

Tabl2.Cells[n1,0]:=IntToStr(n1);

Tabl2.Cells[0,1]:='Коэф.исп.пункт. разгр.';

Tabl2.Cells[0,2]:='Ср.вр.разгр.авт.,мин';

Tabl2.Cells[0,3]:='Макс.очер.на пун.разгр.';

Tabl2.Cells[0,4]:='Ср.вр.разгр.тран.,час';

end;