Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
21
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

Var dlg6:tokRightDlg;

{Объявляем локальную переменную типа TOKRightDlg }

begin

dlg6:=TOKBRightDlg.Create(Application);

{Создаем окно и присвоим его адрес переменной dlg6}

{ }

{Даем начальные значения компонентам диалогового окна}

{если этого не делать, то останутся значения,}

{ заданные при проектировании формы }

dlg6.Edit1.Text:='Я учусь в КГМТУ';

dlg6.Checkbox1.Checked:=False;

dlg6.Checkbox2.Checked:=True;

dlg6.Radiogroup1.ItemIndex:=0;

dlg6.Show;

end;

Рис. 4.3.(а) Окно выбора опций приложения

Рис. 4.3.(б) Окно выбора опций приложения

На работе с диалоговым окном нет необходимости подробно останавливаться: она ничем не отличается от работы со стандартными диалоговыми окнами Windows 95. Переходим к реализации закрытия окна, представленного на рис. 4.4. При нажатии на кнопку CANCEL внесенные во время диалога изменения не сохраняются, необходимо только закрыть окно (оператор Close;) и освободить занятые им ресурсы. Освобождение занятых ресурсов должно осуществиться при возникновения события “Закрытие окна” (onClose). Поэтому, находясь в создаваемом диалоговом окне, переключим его инспектор объектов на события, найдем событие onClose и делаем на нем двойной щелчок.

Реализация процедуры приведена ниже:

procedure TOKRightDlg.FormClose(Sender: Tobject;

var Action: TCloseAction);

begin

Action:=caFree;

end;

По умолчанию параметр Action имеет значение СaMinimize, что означает минимизацию окна до иконки (в пределах главной формы). Точно такой же эффект имеет щелчок на значке в углу формы (минимизация или ликвидация).

Рис. 4.4. Диалоговое окно

Остался последний вопрос: обеспечить сохранение внесенных во время диалога значений перед закрытием окна. Для этого необходимо до закрытия фиксировать внесенные в ходе диалога значения. Их можно, например, присвоить переменным модуля главного окна. Только в этом случае придется в модуль диалогового окна добавить оператор Uses okno1; (имя модуля главной формы), он должен быть в разделе реализации implementation, во избежание перекрестных ссылок между модулями. Текст процедуры закрытия с сохранением:

procedure TOKRightDlg.OKBtnClick(Sender: TObject);

begin

rida1:=Edit1.Text;

{присвоим значение переменным модуля главной формы}

b1:=CheckBox1.Checked;

b2:=CheckBox2.Checked;

RInd:=RadioGroup1.ItemIndex;

close;

end;

Rida1, b1, b2, RInd – глобальные переменные модуля главной формы, они должны быть там объявлены.

Для проверки правильности передачи значений из диалогового окна в данном учебном примере имеется в пункте меню Help подпункт Control New Dialog, при выборе которого введенные значения будут показаны на экране. Это сделано, естественно, только для демонстрации:

procedure TForm1.ControlnewDialog1Click(Sender: TObject);

Var

X1,x2,x3:String;

begin

str(RInd:2,x1);

ShowMessage (Rida1);

ShowMessage('Выбранная радиокнопка-'+x1);

if b1 then x2:=' 1 ' else x2:='';

if b2 then x3:=' 2 ' else x3:='';