Лабораторная работа № 4 Разработка приложения с диалоговыми окнами в ИСР Delphi
Цели работы: Целью работы является практическое освоение методологии и принципов создания элементов диалога как стандартных компонент интерфейса Windows-программы.
Палитра компонент Delphi содержит закладку Dialogs – диалоги работы с текстовыми и графическими файлами (открытие и сохранение), выбор цвета и шрифта, поиск и замена, работа с принтером (рисунок 4).
Объекты, представленные здесь, невидимы во время выполнения программы, – окна диалога активизируются лишь при определенных событиях, задаваемых в проекте. Чаще всего это выбор команды меню или нажатие кнопки. Характеристики и свойства диалоговых компонент приведены в приложении А.
Обычно окна диалога используются в солидных проектах с переработкой информации из файлов различных типов. Поэтому в качестве учебного примера создадим проект из двух форм – основной (Form1, свойство formStyle=fsMDIform) и дочерней (Form2, formStyle=fsMDIchild). Дочернюю форму введем из меню File/New form и затем добавим ее в проект.
На основной форме (рисунок 5) разместим кнопки «открыть», «сохранить», «сохранить как», «выход» и «графика», а также поле Memo с Aling=alRight. Здесь же поместим три диалога – два OpenDialog (один для текста, второй – для графики) и один SaveDialog.
На дочерней форме разместим компонент Image (c закладки Additional) для вывода рисунков. Свойство Align=alClient определит заполнение по краям формы, а свойство Stretch – растяжку рисунка по границам.
Для кнопки «открыть» введем загрузку в поле примечаний содержимого файла
WITH OpenDialog1 Do
If Execute Then begin
Memo1.Visible:=True; { видимость поля редактора }
Memo1.Lines.LoadFromFile(FileName);
Caption:='Мой редактор '+
ExtractFileName(FileName);
SaveDialog1.Filename:=FileName;
FileName:='';
end;
Для кнопки «сохранить»:
Memo1.Lines.SaveToFile(SaveDialog1.Filename)
Для кнопки «сохранить как»:
WITH SaveDialog1 Do
If Execute Then begin
Memo1.Lines.SaveToFile(FileName);
Caption:='Мой редактор '+
ExtractFileName(FileName);
end;
Для кнопки «графика» зададим деактивацию поля Memo для освобождения пространства главной формы:
WITH OpenDialog2 Do
If Execute Then begin
Memo1.Visible:=False;
Screen.Cursor:=crHourglass; {курсор «песочные часы»}
WITH Form2.Image1.Picture Do
LoadFromFile(FileName);
Caption:= ExtractFileName(FileName);
Screen.Cursor:=crDefault; { нормальный курсор }
end;
Принцип использования любого стандартного окна диалога одинаков – вызывается его метод Execute и присваиваются возвращаемые им значения свойствам тех компонент, на которые они влияют.
Для нормальной работы диалоговых компонент необходимо определять свойство Filter (двойным щелчком в инспекторе объектов), например, для диалогов с текстовыми файлами обычно заполняют две строки «Текстовые файлы – *.txt» и «все файлы – *.*». Для графических файлов можно определить «Растры – *.bmp», «Пиктограммы – *.ico», «Метафайлы – *.wmf».
Лабораторная работа № 5 Разработка приложения с использованием строки меню в ИСР Delphi
Цель работы -
Создать программу, выполняющую следующие действия:
1. После запуска программы в окне изображается строка меню (Файл, Выход).
2. При выборе пункта меню Файл появляются пункты меню (Рисунки, Выход).
3. При выборе пункта меню Рисунки появляется вложенное меню, состоящее из двух пунктов (Облака, Лес).
Рис. 24.
4. По щелчку правой кнопки мыши появляется контекстное меню.
5. Выбрать по пункту другой рисунок
Рис. 25.
6. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.
7. Если выбрать любой из пунктов Выход, работа программы завершается.
Описание плана разработки программы
1. Открыть новый проект.
2. Разместить на форме экземпляры компонентов: панель Panel, рисунок Image, диалоговое окно OpenDialog.
3. Выполнить следующие действия:
Таблица 7.
Выделенный объект
|
Вкладка окна Object Inspector
|
Имя свойства/ имя события
|
Действие
|
Forml
|
Properties
|
Caption
|
Установка имени формы «Мое меню»
|
Events
|
OnMouseDown
|
var p:TPoint;
begin
p.X :=X;
p.Y :=Y;
p := ClientToScreen (p);
PopupMenu1.Popup (p.X, p.Y);
end;
|
Запустить редактор меню (дважды щелкнуть на значке меню на форме)
|
Forml.MainMenul
|
Properties (в окне Object Inspector не выбран никакой объект)
|
Caption
|
Ввести текст пункта меню -Файл, и нажать Enter. Система присвоит ему имя N1
|
Между существующими и будущими пунктами меню можно переключаться с помощью щелчка мыши или курсорных клавиш.
|
Forml.MainMenul
|
Properties
|
Caption
|
Ввести текст пункта меню -Выход, и нажать Enter. Система присвоит ему имя N2.
|
Events (щелкнуть на пункте Выход в строке меню)
|
N2Click
|
Close;
|
Щелкните на пункте Файл. Редактор меню создал еще одну заготовку под этим пунктом. Это заготовка для меню, которое откроется при выборе пункта Файл в работающей программе. Используя заготовки, создайте в этом меню два пункта: Рисунки (система присвоит ему имя N3) и Выход (N4). Выберите в редакторе меню пункт Рисунки и нажмите комбинацию клавиш Ctrl + Вправо.
|
N4: TMenuItem
|
Events
|
OnClick
|
Выберем из раскрывающегося списка уже существующую процедуру-обработчик N2Click
|
Forml.MainMenul
|
Properties
|
Caption
|
Ввести текст пункта меню -Облака, и нажать Enter. Система присвоит ему имя N5.
|
N5: TMenuItem
|
Events (выбрать в строке меню на форме пункт Облака)
|
OnClick
|
Image1.Picture.LoadFromFile ('C:\Windows\Облака.bmp');
|
Forml.MainMenul
|
Properties
|
Caption
|
Ввести текст пункта меню - Лес, и нажать Enter. Система присвоит ему имя N6.
|
N6: TMenuItem
|
Events (выбрать в строке меню на форме пункт Лес)
|
OnClick
|
Image1.Picture.LoadFromFile ('C:\Windows\Лec.bmp');
|
Закройте окно редактора меню и убедитесь, что теперь строка меню появилась в основной форме программы.
|
Продолжение таблицы 7.
Выделенный объект
|
Вкладка окна Object Inspector
|
Имя свойства/ имя события
|
Действие
|
PopupMenu
(Вкладка Standard)
|
Properties
|
Caption
|
Ввести текст пункта меню -Облака, и нажать Enter. Система присвоит ему имя N7.
|
Caption
|
Ввести текст пункта меню - Лес, и нажать Enter. Система присвоит ему имя N8.
|
N7
|
Events
|
OnClick
|
Выберем из раскрывающегося списка уже существующую процедуру-обработчик N5Click
|
N8
|
Events
|
OnClick
|
Выберем из раскрывающегося списка уже существующую процедуру-обработчик N6Click
|
Image
(Вкладка Additional)
|
Properties
|
Stretch
|
Присвоить значение True
|
4. Сохраните проект, запустите и протестируйте его.
Листинг подпрограммы
procedure TForm1.N2Click (Sender: TObject);
begin
Close;
end;
procedure TForm1.N5Click (Sender: TObject);
begin
Imagel.Picture.LoadFromFile ('C:\Windows\Облака.bmp');
end;
procedure TForm1.N6Click (Sender: TObject);
begin
Imagel.Picture.LoadFromFile ('C:\Windows\Лес.bmp');
end;
procedure TForml.FormMouseDown
(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X. Y: Integer); var p:TPoint;
begin
p.X :=X;
p.Y :=Y;
p := ClientToScreen (p);
PopupMenul.Popup (p.X, p.Y);
end;
|