Практическое занятие: Стандартные и типовые диалоги
Цели занятия:
-
получить навыки использования стандартных и типовых диалогов в программе Delphi.
Содержание отчета: номер и название практического
занятия, цели занятия, номер компьютера и путь к папке, где сохранены задачи, ответы
на контрольные вопросы.
Теоретические сведения
Delphi
предлагает ряд процедур и функций отображающие диалоги общего назначения.
1) Процедура ShowMessage - отображает окно сообщения с кнопкой ОК.
2) Функция MessageDlg -
отображает окно сообщений в центре экрана. Она
позволяет получить ответ пользователя.
3) Функция MessageDlgPos - отличается от MessageDlg наличием параметров
X и Y, управляющих положением окна на
экране.
4) Функция InputBox отображает диалоговое окно, служащее для ввода строки текста. Окно
выводится в центре экрана. В окне имеется поле ввода с надписью, а также кнопки
OK и Cancel.
5)
Стандартные
диалоги
На
странице Dialogs в Delphi имеются элементы,
реализующие диалоги общего назначения. Например:
OpenDialog – выбор открываемого файла
SaveDialog – выбор сохраняемого файла
OpenPictureDialog – выбор открываемого графического файла
SavePictureDialog – выбор сохраняемого графического файла
FontDialog – настройка параметров шрифта
ColorDialog – выбор цвета
PrintDilog – вывод на принтер
PrinterSetupDialog – выбор принтера и настройка его параметров
FindDialog – ввод строки текста для поиска
ReplaceDialog – ввод строк текста для поиска и замены.
Для
вызова любого стандартного диалога используется метод Execute – функция, возвращающая логическое значение. При закрытии диалога
кнопкой ОК она возвращает значение True, а
при отмене диалога – значение False.
Ход занятия
Для заданий 1-7
все компоненты (кнопки, надписи и др.) размещать на одной форме. Надписи на
компонентах должны говорить пользователю об их назначении. Компоненты
группировать по номерам заданий.
Для заданий
№8-10 – создать отдельное визуальное приложение.
Пример:
Задание
№1. Использование процедуры ShowMessage
На форме разместите
2 кнопки, каждая из которых выводит следующий текст на экран:
1) «Приветствую
тебя, пользователь»;
2) «Текст сообщения
разделен на 2 строки»
(использовать код #10#13 для перехода на новую строку);
Пример
использования простейшего диалогового окна:
ShowMessage(‘Простейшее диалоговое окно’);
ShowMessage(‘1 строка’+#10#13+’2 строка’);
Задание №2. Использование
процедуры ShowMessage
На
форме расположить рядом 2 компонента Edit и одну кнопку,
при нажатии на которую программа считывает из текстовых полей Edit1 и Edit2 числа, находит и выводит на экран их
произведение с поясняющим текстом, например, «Произведение чисел равно 10».
Пример
получения значения переменной a:=StrToFloat(Edit1.text);
Добавьте
рядом еще одну кнопку, которая позволит вывести произведение чисел в следующем
виде:
«Произведение чисел 5 и 6 равно 30.» (числа должны быть указаны из поля Edit, а
результат рассчитан)
Пример. Вывести квадрат числа, введенного в
текстовое поле.
a:=StrToFloat(Edit1.text);
a2:=sqr(a);
ShowMessage(‘Квадрат числа равен ’+IntToStr(a2));
Задание №3. Использование процедуры MessageDlg
Расположите
на форме кнопку и текстовое поле Edit. При нажатии на
кнопку программа должна выводить сообщение с вопросом: «Хотите ли автоматически
заполнить дату в текстовом поле?». В окне сообщения должны присутствовать 3
кнопки: Yes, No, Cancel.
Если
пользователь ответит «Yes», то в поле Edit записать текущую дату.
Если
пользователь ответит «No», то вывести обычное диалоговое
окно (см. задание №1, 2) с сообщением «При необходимости можете повторно нажать
кнопку для ввода текущей даты».
Если
пользователь нажмет кнопку «Cancel», то установить курсор
в текстовое поле.
Пример.
Проверка
корректности даты и предложение пользователю исправления даты. В окне должны
быть 2 кнопки: OK, No.
Var rez:TModalResult;
Begin
If length(edit1.text)<8 then begin
rez:=MessageDlg(‘Неправильная дата’#10#13’Исправить
автоматически?’, mtError,[mbOK,mbNo],0);
If rez=mrOK then edit1.text:=DateToStr(Date);
If rez=mrNo then edit1.setfocus;
End;
Задание
№4. Использование процедуры MessageDlg
Расположите
на форме кнопку «Изменить цвет формы». При нажатии на нее должно отобразиться
предупреждающее окно (Warning) с текстом «Вы действительно
хотите изменить цвет формы?». На форме должны быть 2 кнопки: Yes, No.
Если
пользователь ответит «Yes», то установить цвет формы: Форма1.Цвет:=rgb(175,255,175)
Если
пользователь ответит «Нет», то не производить никаких действий.
См. пример выше.
Задание №5. Использование функции MessageDlgPos
На
форме расположить 2 кнопки: «Левый верхний угол» и «Правый верхний угол». При
нажатии на каждую из них должно появляться диалоговое окно в указанном на
кнопке месте. Причем, в окне должна быть отображена 1 кнопка «All». При нажатии на нее программа должна вывести координаты окна формы
(Form1.Left и Form1.Top).
Примечание:
можно использовать свойство экрана Screen.Width.
Пример
для левого верхнего угла:
rez:=MessageDlgPos('Левый верхний угол', mtError, [mbAll],0, 0, 0);
If rez=mrAll then edit1.text:= 'x='+ IntToStr(Form1.Left)+…);
Задание №6. Использование функции InputBox
На
форме расположите кнопку «Сантиметры и дюймы», Label и Edit (для вывода результата). При нажатии на нее должно появляться окно, в
которое пользователь должен ввести рост человека в сантиметрах. Программа
должна перевести это число в дюймы и вывести результат в Edit.
s:=InputBox (‘Сантиметры и дюймы’,’Введите длину
в сантиметрах:’, ’’);
//s – строкового типа
sm:=StrToFloat(s);
//sm – вещественного типа
duim:=sm/2.54;
//вывод значения переменной duim с поясняющим текстом в Edit
_____________:=’Рост человека в … равен ’+FloatToStr(duim);
Задание №7. Использование функции InputBox
На
форме расположите кнопку «Определение веса. Караты и граммы», Label и Edit (для вывода результата). При нажатии на нее
должно появляться окно, в которое пользователь должен ввести количество карат ювелирного
изделия. Программа должна перевести это число в граммы и вывести результат в Edit.
Примечание:
1 карат равно 0.2 грамма, 1 грамм равно 5 карат
См. пример выше.
Задание №8. Программа для просмотра
содержимого текстового файла
1.
На пустую форму разместить компонент TOpenDialog, кнопку TButton и многострочное поле TMemo.
2.
Сразу сохраните проект и файл формы в вашей папке.
3.
Для OpenDialog (диалоговое
окно открытия файла) настройте свойство Filter следующим образом:
При
этом при срабатывании этого компонента появится окно выбора файла для открытия,
причем можно будет выбрать только 2 типа файлов:
4.
При работе программы щелчок по кнопке будет
сигналом о необходимости загрузить в поле содержимое нового файла, который
выберет пользователь в диалоговом окне. Для этого в обработчик события нажатия
на кнопку «Просмотр содержимого текстового файла» прописать следующий код:
if OpenDialog1.Execute then
// Результат успешный –
пользователь выбрал файл
Memo1.Lines.LoadFromFile (OpenDialog1.FileName);//
загружаем файл в поле Memo
Задание №9. Сохранение содержимого
поля Memo
Добавьте
на форму кнопку «Сохранить как», которая позволит сохранить содержимое поля Memo
в текстовый файл.
//допишите строку, которая позволяет открыть диалоговое
окно сохранения
//см. пример выше
Memo1.Lines.SaveToFile(SaveDialog1.FileName+’.txt’);
Задание
№10. Выбор цвета формы
Разместите
на форме кнопку для открытия окна выбора цвета формы (ColorDialog). При нажатии на нее должен осуществляться метод Execute (см. предыдущий пример). Значение цвета хранится в свойстве ColorDialog1.Color. Это значение присвоить в качестве цвета
формы – Form1.Color.
Контрольные вопросы:
1.
Кратко опишите процедуры и функции для работы с
диалоговыми окнами.
2.
Назовите компоненты, реализующие стандартные
диалоговые окна.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.