Опубликован: 16.11.2010 | Уровень: специалист | Доступ: платный
Лекция 9:

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

Из всех свойств следует обратить внимание на свойство 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).

Вкладка свойства Options

Рис. 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
Вид формы после добавления компонентов StringGrid

увеличить изображение
Рис. 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;

8.3.4. Добавление командных кнопок

Для управления работой имитационной модели к форме надо добавить шесть командных кнопок (рис. 8.12).

В модели предусмотрен пример. При нажатии кнопки ПРИМЕР автоматически вводятся исходные данные, курсор устанавливается на кнопке МОДЕЛИРОВАНИЕ. Нажатием этой кнопки переходят к процессу моделирования.

Стартовая форма имитационной модели

увеличить изображение
Рис. 8.12. Стартовая форма имитационной модели

По окончании моделирования для вывода результатов нужно нажать кнопку ВЫВОД. Результаты моделирования появятся в нижней таблице.

Если производилось моделирование примера, а потом нужно выполнить моделирование с другими исходными данными, нажатием кнопки СБРОС можно удалить данные примера и ввести новые. Использование кнопки СБРОС удобно в том случае, если очередной ввод исходных данных требует большого количества изменений. После этого нажать кнопку ВВОД и нажатием кнопки МОДЕЛИРОВАНИЕ перейти к процессу моделирования, по завершении которого нажать кнопку ВЫВОД.

Нажатие на кнопку ВЫХОД ИЗ МОДЕЛИ приводит к завершению работы программы имитационной модели. Закрывается открытая форма приложения.

Кнопки добавляются в форму точно так же, как и другие компоненты. Пиктограмма командной кнопки _2U,находится на палитре стандартных компонентов (см. рис. 8.6). После добавления кнопок с помощью диалогового окна Object Inspector надо установить требуемые значения их свойств (табл. 8.9).

Таблица 8.9. Свойства кнопок стартовой формы имитационной модели
Name Button1 Button2 Button3 Button4 Button5 Button6
Caption Ввод Сброс Моделирование Выход из модели Пример Вывод
Top 470 470 470 470 470 470
Left 176 96 256 528 16 424
Height 25 25 25 25 25 25
Width 75 75 161 169 75 75

После запуска программы курсор сразу автоматически устанавливается в поле редактирования Edit1 для ввода переменной Средний интервал поступления транспортов. Поэтому в форме указано, что надо сначала ввести данные, потом нажать кнопку ВВОД и только потом кнопку МОДЕЛИРОВАНИЕ.

Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 

алексей оглы
алексей оглы
Россия
рафич Салахиев
рафич Салахиев
Россия