ДиалогиОрганизация взаимодействия приложения с пользователем |
Уроки Delphi
1. Первая программа
2. Использование компонентов
3. События Delphi
4. Типы данных Delphi
5. Создание своих типов данных
6. Выражения и операторы
7. Работа с файлами в Delphi
8. Дополнительные формы
9. Подпрограммы в Delphi
10. Исключительные ситуации
11. Взаимодействие приложения с пользователем
12. Указатели в Delphi
13. Обзор компонентов
14. Работа со строками
15. Создание интерфейса
16. Графика в Delphi
17. Многопоточность в Delphi
18. Динамическое создание
компонентов Поиск по сайту Это важно:
Метод Application.ProcessMessages;
Это полезно:
Параметр Sender в обработчиках событий;
Бояться не надо |
Лайфхак для парней: как добавить 💰 своей девушке? Находка для тех, чьи девушки и супруги работают в сфере услуг: маникюр, брови, ресницы и так далее 🤔 Вы же наверняка задумывались, как помочь своей половинке зарабатывать больше? Но что делать, если во всех этих маркетингах и процедурах не разбираешься от слова «совсем»? Мы нашли выход — это сервис VisitTime Чат-бот для мастеров и специалистов, который упрощает ведение записей: — Сам записывает клиентов и напоминает им о визите — Персонализирует скидки, чаевые, кешбек и предоплаты — Увеличивает доходимость и помогает больше зарабатывать А еще там первый месяц бесплатно, поэтому лучшее, что вы можете сделать сейчас — установить или показать его своей принцессе Всё интуитивно понятно и просто, достаточно нажать на этот текст и запустить чат-бота Взаимодействие приложения с пользователем присутствует в каждой программе. Приложение должно иметь возможность сообщить пользователю о том или ином развитии событий, предоставить возможность принять решение и сообщить его программе. Для этого Delphi предоставляет программисту несколько способов, в зависимости от необходимого уровня взаимодействия приложения с пользователем в каждом конкретном случае. Функция ShowMessageПростейший случай такого взаимодействия - просто проинформировать пользователя. Ну хотя бы о том, что в процессе вычисления произошло деление на нуль. Простое информационное сообщение укажет пользователю на необходимость внести изменение в данные расчёта. Для создания простого информационного сообщения служит встроенная функция ShowMessage:
ShowMessage('На нуль делить нельзя!');
Функция ShowMesage допускает выведение сообщения в несколько строк. Для этого нужно воспользоваться стандартными символами перехода на другую строку: #10#13:
ShowMessage('возникла ошибка деления на нуль.'+#10#13+'Исправьте введённые данные.');
Пример. Вот как может выглядеть программа, вычисляющая результат деления двух чисел, с организацией выдачи информации пользователю о неправильном вводе данных:
procedure TForm1.Button1Click(Sender: TObject); Данная программа предупреждает пользователя как о вводе нуля, так и вообще о введении нечисловых данных или нецелых чисел. Информационное окошко выводится в модальном режиме, то есть, при выдаче сообщения работа программы прерывается, и продолжится только после закрытия окна с оператора, следующего за вызовом функци ShowMessage: Функция MessageDlgВ общем случае, кроме простого информирования, приложение должно получить согласие пользователя на совершение того или иного действия. Такого рода взаимодействие программы и пользователя позволяет осуществить функция MessageDlg. Как видно из названия, функция MessageDlg осуществляет именно диалог, то есть задаёт вопрос и ожидает ответ пользователя.Для получения такого ответа функция MessageDlg может предоставлять пользователю набор кнопок, подразумевающих тот или иной ответ. Ответы на вопрос могут быть, например, "Да" - "Нет", или "Да" - "Нет" - "Отменить", или другие варианты. Вот описание функции MessageDlg:
function MessageDlg(const Msg: String; DlgType: TMsgDlgType;
Параметры функции MessageDlg:Msg - выводимое сообщение, с возможностью вывода в несколько строк, DlgType - тип диалога, например "Опасность, Ошибка, Информация, Подтверждение", и т.д., Buttons - множество кнопок с соответствующими заголовками, HelpCtx - в большинстве случаев можно использовать "0" - ноль. Для каждого из типов диалога выводится своя пиктограмма, что, несомненно, прибавляет красочности и информативности окну, выводимому данной функцией. Для того чтобы получить более полную информацию о параметрах, воспользуйтесь справкой Delphi: нажмите CTRL и щёлкните мышкой по функции или нужному параметру. Откроется модуль с полным описанием. Функция MessageDlg возвращает значение, соответствующее данному пользователем ответу на вопрос. Это значение несложно получить в целую переменную и проанализировать, перед тем как использовать в программе. Например, нажатие на кнопку "Yes" возвращает значение "6", результат нажатия любых других кнопок также несложно получить. Например, для того чтобы организовать диалог закрытия приложения, программа может использовать такой вариант функции MessageDlg:
Result:=MessageDlg('Вы действительно хотите закрыть приложение?', mtConfirmation, [mbYes, mbNo], 0);
Пример.Организуем диалог, запрашивающий у пользователя разрешение сохранить изменения в текстовом редакторе в файл перед закрытием приложения:
procedure TForm1.Button1Click(Sender: TObject);
Видим, что по сравнению с функцией ShowMessage функция MessageDlg имеет более развитый интерфейс. Можно управлять заголовком окна, пиктограмой выводимой в том или ином типе запроса, и набором кнопок, позволяющим получить и проанализировать ответ пользователя. Пользуясь этим, функцию MessageDlg с успехом можно использовать вместо функции ShowMessage. Русификация функции MessageDlgКонечно, такие заголовки кнопок как, например, "Yes", "No", "Cancel" давно стали стандартом и понятны пользователям без перевода. Однако, применяя функцию MessageDlg в программе, где все остальные надписи выводятся на русском языке, можно видеть что английский интерфейс её окна смотрится чужеродно. Воникает вопрос, как можно русифицировать заголовок окна и названия кнопок такой удобной и полезной функции как MessageDlg.Есть несколько способов сделать это. Заголовок и названия кнопок функции MessageDlg берутся из модуля consts.pas и при компиляции помещаются в ресурсы приложения. Поэтому, изменив данные константы в упомянутом модуле, и перекомпилировав приложение, мы получим вполне себе русскоязычное окно, выводимое функцией MessageDlg. Однако, что-то менять в стандартных модулях Delphi не всегда правильно. Есть другой способ, связанный с динамическим формированием функции MessageDlg. Этот способ позволяет перед выводом на экран динамически изменить параметры функции. Вот как, пользуясь этим способом, можно русифицировать запрос на сохранение текста в предыдущей программе:
procedure TForm1.Button1Click(Sender: TObject);
Исключительные ситуации
В начало урока
Указатели в Delphi |
© 2023 Delphi-Manual.ru - Уроки Delphi начинающим с нуля |