- •Основы визуального программирования в среде Delphi 7.0
- •2. МеткаLabel(страницаStandard)
- •3. Окно редактирования Edit (страница Standard)
- •4. Кнопки Button, BitBtn (страницы Standard, Additional)
- •5. Компонент CheckBox(страница Standard)
- •6. Компоненты GroupBox, RadioButton (страница Standard)
- •7. Компонент ComboBox(страница Standard)
- •Пример выполнения задания
- •Практические задания
- •Занятие №2
- •2. Компонент PageControl (страница Win32)
- •3. КомпонентDateTimePicker(страницаWin32)
- •4. КомпонентTrackBar(страницаWin32)
- •5. Компонент UpDown (страница Win32)
- •Практические задания
- •Занятие №3
- •2. Создание меню с помощью мастера
- •3. Компоненты MainMenuи РоpupMenu(панельStandart)
- •4. Проектирование меню с помощью Конструктора Меню
- •5. Организация отклика на вызов пункта меню
- •6. Диалоги как модальные формы
- •7. Создание диалогового окна с помощью шаблона
- •8. Вызов диалогового окна пунктом меню
- •9. Прием введенных значений из диалогового окна в основное окно приложения
- •Практические задания
- •Занятие №4
- •2. Компонент TreeView(страницаWin32)
- •3. Компонент ListView(страницаWin32)
- •4. Компонент OpenDialog (страница Dialogs)
- •5. Компонент FontDialog (страница Dialogs)
- •6. Компонент ColorDialog(страницаDialogs)
- •Практические задания
- •Занятие №5 Подготовка справочной системы Цель занятия
- •Методические указания
- •1. Создание текстового файла разделов (*.Rtf)
- •Сноска #
- •Сноска к (заглавная латинская буква)
- •2. Создание файла содержания (*.Cnt)
- •3. Создание файла проекта
- •4. Подключение справочной системы к приложению
- •Задание
- •Оглавление
7. Создание диалогового окна с помощью шаблона
Диалоговое окно можно создавать вручную, т.е. создать новую форму, используя команду «New Form» из главного меню «File», разместить на ней необходимые компоненты, определить действия, обработчики событий и т.д., а можно воспользоваться заготовками диалогов из шаблона. Шаблон позволяет вставить в приложение заготовку нового диалогового окна, на котором уже размещены типовые кнопки, чаще всего встречающиеся в диалогах, такие как OK, Cancel, Help; и для которого уже заданы некоторые свойства.
Чтобы вставить в приложение диалог из шаблона необходимо:
вызвать команду «New…» из главного меню «File»
в появившемся окне «New Items» перейти на страницу «Dialogs»
выбрать нужный шаблон, например, StandardDialog или запустить мастер DialogWizard, который, запрашивая пользователя, за несколько шагов конструирует новое диалоговое окно.
При добавлении диалога в приложение будет вставлен новый модуль, представляющий диалоговую форму. Его следует сохранить в папке с приложением, задав какое-либо имя.
В процессе проектирования часто бывает, что главная форма скрывает за собой диалоговую. Чтобы выбрать скрытую форму можно использовать комбинацию клавиш «Shift+F12».
8. Вызов диалогового окна пунктом меню
Для вызова диалогового окна пунктом меню необходимо в обработчике события OnClick пункта меню делать диалоговое окно видимым. Как отмечалось, чаще всего для диалоговых окон используют метод ShowModal, который позволяет открыть форму как модальную.
Пример:
Используя шаблон, добавим в приложение диалоговое окно OKRightDlg. Для вызова диалога пунктом меню CallDlg обработчик события OnClick должен иметь следующий вид:
procedure TForm1.CallDlgClick(Sender : TObject)
begin
OKRightDlg.ShowModal; // открытие формы OKRightDlg как модальной
end; // обработка результата закрытия диалоговой формы
9. Прием введенных значений из диалогового окна в основное окно приложения
Обмен данными между окнами можно осуществлять через глобальные переменные. Описать глобальную переменную нужно либо в отдельном модуле подключаемом к ко всем модулям приложения, либо с помощью прямой передачи данных из созданной модальной формы как упоминалось раньше. Однако использование глобальных переменных не является корректным, затрудняет процесс отладки приложения и считается плохим тоном в высокоуровневом программировании
Пример:
Пусть на основной форме имеется компонент Memo1, в который должна добавляться строка из окна редактирования Edit1 диалога.
При нажатии кнопки ОК на диалоге его свойство ModalResult станет равным свойству ModalResult кнопки, а так как это свойство для кнопки отлично от нуля (от mrNone), а именно равно mrOK=1, то диалоговое окно закроется, но его свойство ModalResult останется доступным.
Проверяя это свойство в обработчике OnClick пункта меню можно узнать, какую кнопку нажал пользователь. Если он нажал ОК, то необходимо в Memo1 добавить строку stroka. Обработчик события OnClick для раздела меню CallDlg должен выглядеть следующим образом:
procedure TForm1.CallDlgClick(Sender : TObject)
begin
OKRightDlg.ShowModal;
If (OKRightDlg.ModalResult=mrOk)
then Memo1.Lines.Add(OKRightDlg.Edit1.Text);.
end;
При работе с многоформовыми программами не стоит забывать, что неудаленные формы засоряют память, создают проблемы с совместно используемыми переменными и замедляют работу приложения. Поэтому после окончания работы с формой необходимо очищать отведенную под нее память, например в нашем случае после передачи данных в основное приложение стоит добавить в процедуру строку, вызывающую деструктор для созданной формы:
OKRightDlg.Destroy;
Пример программы «Анкета»:
Будем запрашивать у пользователя данные о ФИО и дате рождения и заносить их в общую таблицу.
Поместим на форму MyForm компоненты
Memo1
MainMenu1
С помощью конструктора добавим в меню пункт <Добавить строку>. Для этого
Щелкнем 2 раза на компоненте MainMenu1
Заполним свойсто Caption первого раздела: &Добавить строку
Создадим диалоговую форму для ввода данных. File New Form. Поместим на нее компоненты:
Label1 – Caption = Фамилия
Edit1
Label2 – Caption = Имя
Edit2
Label3 – Caption = Отчество
Edit3
Label4 – Caption = Дата рождения
DateTimePicker1
Button1 – Caption = Ввод, ModalResult = MrOk
Button1 – Caption = Отмена, ModalResult = MrCancel
Определим переменную для передачи данных из диалоговой форму в главную в виде записи:.
В файле Unit1.pas напишем
…
Type
TNewMan = record
Fam, Name, Otch : string;
Date : TDateTime;
end; ;
var
NewMan: TNewMan;
…
Для связи форм в файле Unit1.pas:
uses Unit2;
Для вызова диалоговой формы при нажатии пункта меню и принятия из нее данных в обработчике этого события (щелкнуть на пункте меню) напишем:
…
Form2 := TForm2.Create;
Form2.ShowModal;
if (Form2.ModalResult=mrOk)
then
begin
NewMan.Fam := Form2.Edit1.Text;
NewMan.Name := Form2.Edit2.Text;
NewMan.Otch := Form2.Edit3.Text;
NewMan.Date := Form2.DateTimePicker1.DateTime;
Str := NewMan.Fam + ‘ ’ + NewMan.Name + ‘ ‘ + NewMan.Otch + ‘#13#10’ +
+ DateTimeToString(NewMan.Date)+ ‘#13#10’;
Memo1.Lines.Add(Str);
end;
…
Создадим в текущем каталоге файл “Anketa.txt” (ФайлСоздатьТекстовый документ) и добавим операторы для считывания данных из файла при начале работы и записи в файл при завершении.
procedure TForm1.FormCreate(Sender : TObject)
begin
Memo1.Lines.LoadFromFile(‘Anketa.txt’);
end;
procedure TForm1.FormClose(Sender : TObject, &Action : TCloseApplication)
begin
Memo1.Lines.SaveToFile("Anketa.txt");
end;