end ;
end ;
Обоснования выбора визуальных компонентов:
Для текущего состояния программы и управления поведение воспользуемся следующими компонентами:
Класс компонента TListBox для отображения текущего списка светофоров и поездов, обеспечивающих также выбор данных объектов для удаления или редактирования. Это компонент удобен тем, что способен хранить не только строки, но и объекты.
Компонент TImage используется как поверхность графического отображения задачи. По сравнению с компонентами, так же имеющих поверхность рисования не требует описания полного отображения текущего состояния задачи, а самостоятельно сохраняет все изменения, вносимые входе программы.
Компонент TStatusBar позволяет визуально отображать данные, который необходимы для анализа текущего состояния задачи.
Компонент TGroupBox позволят выделить некоторую часть интерфейса. В отличии от TPanel, в TGroupBox имеется Caption.
Компонент TBeve позволяет визуально выделить нужную часть программы, для более понятного обращения.
Компоненты TOpendialog и TSaveDialog облегчают сохранении и загрузку данных.
Компоненты TMeanMenu иTPopupMenu облегчают выбор действий, которые необходимо сделать в той или иной ситуации. В отличии от TToolBar не отвлекает от самой поставленной задачи.
Компонент TActionList позволяет описать действия только один раз и в дальнейшем использовать их. В отличии от процедур, компоненты активно работают с TActionList.
Компонент TTimer позволяет осуществить движение и изменение объектов через определенный интервал времени.
Структура диалогов:
Она приведена на рис.1. Диалоговые окна “Создания дороги” (1) и “ Изменения скорости поезда ” (2) являются физически одной формой, поэтому их поведение одинаково. При этом выбирается радиус дороги или изменяется скорость поезда, соответственно; “Добавление поезда” (3), в нем выбирается скорость и цвет поезда. Для установки цвета используется стандартный диалог выбора цвета(4). Вод данных во всех диалоговых окнах заведомо ограничен предельными значениями.
При добавлении поезда или светофора может возникнуть несколько видов диалоговых окон:
“Карта не создана.”(5);
“Не выбран координаты для создания светофора.”(6);
“Не выбран координаты для создания поезда.”(7);
“Слишком близко к соседнему светофору.”(8);
“На данной дороге нет светофоров.”(9);
“Перед данным светофором уже есть поезд.” (10);
“Светофор для удаления не выбран.”(11);
“Поезд для удаления не выбран. (12);
“Созданиядороги” (1)
procedure TMain.ANewExecute(Sender: TObject);
begin
Timer1.Enabled:= false ;
with fPSDialog do
begin
Caption:= 'Создание дороги.' ;
Label1.Caption:= 'Радиус дороги:' ;
with fPSDialog.SpinEdit1 do
begin
{Подготовка диалога к работе(задание первоначальных данных)}
MaxLength:= 3 ;
MaxValue:= VMaxR ;
MinValue:= CMinR ;
Value:= 135 ;
end ;
if ShowModal = mrOk then
begin
{Очистка холста}
PoleDeleteObject ;
Radius:= SpinEdit1.Value ;
VObnulirovanie ;
ConstInitialization ;
GoNewPoleImg ;
with StatusBar1 do
begin
Panels[0].Text:= '*.svtr' ;
Panels[1].Text:= ' Радиус дороги: ' + IntToStr(Radius) ;
Panels[2].Text:= ' Кол-во светофоров: 0' ;
Panels[3].Text:= ' Кол-во поездов: 0' ;
end ;
NewPoleBool:= true ;
end ;
end ;
end;
“Добавлениесветофора” (3)
procedure TMain.AAddTrainExecute(Sender: TObject);
begin
Timer1.Enabled:= false ;
try
if not NewPoleBool then
Raise Exception.Create(' Карта не создана.') ;
if CountSvetofor = 0 then
Raise Exception.Create(' На данной дороге нет светофоров.') ;
if not PoleNavBool then
begin
PoleNavBool:= true ;
Raise Exception.Create(' Не выбран координаты для создания поезда.') ;
end ;
{Подготовка диалога к работе(задание первоначальных данных)}
with fNewTrainDialog.SpinEdit1 do
begin
MaxLength:= 2 ;
MinValue:= 1 ;
MaxValue:= CMaxSpeed - 1 ;
Value:= 40 ;
end ;
{Есть ли на этом участке поезд}
if AddTrainBool(aPoleNav) then
begin
if fNewTrainDialog.ShowModal = mrOk then
AddTrain(aPoleNav,CMaxSpeed - fNewTrainDialog.SpinEdit1.Value,fNewTrainDialog.ColorDialog1.Color)
end
else
Raise Exception.Create('Перед данным светофором уже есть поезд.') ;
StatusBar1.Panels[4].Text:= '' ;
except
on E: Exception do
MessageDlg(E.Message,mtError,[mbOK],0) ;
end ;
Timer1.Enabled:= true ;
end;
Инструкция по использованию программы:
В начальном состоянии программа отображает только пустую область отображения и два пустых списка светофоров и поездов. Для начала активных действий программы требуется создать дорогу. Путем выбора следующих действий: Файл -> Создать. В дальнейшем необходимо включить выбор координат: Правка ->Вкл./ выкл. выбор координат. Следующим шагом нужно добавить светофоры: Правка -> Добавить светофор, а добавление поездов происходит аналогичным образом. Чтобы удалить светофор или поезд необходимо выбрать из списка соответствующий элемент и выбрать в меню: Правка –> Удалить […].
Изменить скорость поезда можно так: Правка -> Изменить скорость поезда, но перед эти выбрав поезд из списка.
Рис1. Структура диалогов программы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.