mays 0 / 0 / 0 Регистрация: 05.03.2015 Сообщений: 24 |
||||
1 |
||||
Вывод диалогового окна ошибки08.05.2015, 00:22. Показов 3592. Ответов 6 Метки нет (Все метки)
Когда происходит ошибка (пустые эдиты) выводится 3 ошибки, а нужно 1, прикрепляю код:
0 |
VladWH 243 / 193 / 94 Регистрация: 01.05.2015 Сообщений: 732 |
||||
08.05.2015, 00:40 |
2 |
|||
0 |
0 / 0 / 0 Регистрация: 05.03.2015 Сообщений: 24 |
|
08.05.2015, 00:44 [ТС] |
3 |
В Вашем случаее ошибка будет только тогда, когда все 3 CheckBox-а будут активными, мне же нужно: либо каждый по отдельности, либо 2 любых, либо же 3. Заметили что под каждым CheckBox-ом разные Edit-ы?
0 |
VladWH 243 / 193 / 94 Регистрация: 01.05.2015 Сообщений: 732 |
||||
08.05.2015, 00:59 |
4 |
|||
мне же нужно: либо каждый по отдельности, либо 2 любых, либо же 3. В твоем коде так и есть… можно вот так правда…
Я думаю это решит твою проблему
0 |
mays 0 / 0 / 0 Регистрация: 05.03.2015 Сообщений: 24 |
||||
08.05.2015, 01:08 [ТС] |
5 |
|||
Отпишусь через пару минут об этом:
В любом случаее — спасибо. Добавлено через 7 минут Отпишусь через пару минут об этом: Плохая идея, не помогло.
0 |
243 / 193 / 94 Регистрация: 01.05.2015 Сообщений: 732 |
|
08.05.2015, 01:12 |
6 |
как это так? весь код процедуры покажи тогда
0 |
пофигист широкого профиля 4681 / 3117 / 857 Регистрация: 15.07.2013 Сообщений: 17,967 |
|
08.05.2015, 01:20 |
7 |
как это так? весь код процедуры покажи тогда Не код нужно тут спрашивать, а задачу просить уточнить.
0 |
Как сделать в дельфи 7 так, чтобы после нажатия кнопки появлялось окно, аналогичное ошибке с моим текстом, затем после нажатия «ок» ещё одно такое окно и после нажатия «ок» во втором окне приложение закрывалось.
задан 1 мая 2012 в 14:28
1
Вы хоть читали справку по Delphi? Перехвати исключение, вызови одну, две… пять форм, и на последней поставь процедуру завершения проги. Код давать не буду, сам найдешь в сети. (Полезно для мозга).
ответ дан 1 мая 2012 в 14:34
Привет попробуй так (если я правильно понял, что тебе нужно):
if MessageDlg('Твое сообщение об ошибке 1', mtError, mbOK, 0) = mrOk then
if MessageDlg('Твое сообщение об ошибке 2', mtError, mbOK, 0) = mrOk then
Close();
ответ дан 1 мая 2012 в 14:34
Lest4tLest4t
4062 серебряных знака7 бронзовых знаков
2
Как осуществляется вывод в окно сообщения Delphi? Окно сообщений применяется для того, чтобы привлечь внимание пользователей. Используя окно сообщений, программа может оповестить программиста об ошибке первичных данных или сделать запрос о подтверждении выполнения некоторой необратимой операции (удалить файл, очистить содержимое и др.).
В Delphi для вывода на экран окна сообщения зарезервирована процедура ShowMessage (либо выполняющая те же операции функция MessageDlg Delphi). Остановимся подробнее на них.
Процедура ShowMessage Delphi:
Применение процедуры ShowMessage позволяет вывести на экран окно с необходимым текстом и кнопкой подтверждения OK. Процедура ShowMessage Delphi организована следующим образом:
откуда Сообщение представляет собой текст, впоследствии выведенный в диалоговом окне.
Пример 1. Представим иллюстрацию окна сообщения, которое получено вследствие выполнения следующей инструкции:
Заметка. Заголовок окна сообщения, которое выводится при помощи процедуры ShowMessage, содержит название приложения, задающееся на специальной вкладке Application в окне Project Options. В случае, когда названия приложения не указано, заголовок будет включать в себя имя исполняемого файла.
Функция MessageDlg Delphi:
При помощи более универсальной процедуры MessageDlg возможно размещение в окне сообщения одного из стандартных значков, например, «Внимание», а также возможно задание количества и типа командных кнопок и обозначить, какую именно кнопку щелкнул программист. На рисунке ниже представлена иллюстрация окна, выведенного вследствие выполнения следующей инструкции:
В качестве значения функции MessageDlg выступает число, проверка значения которого может показать, какая командная кнопка завершила диалог. Общий вид обращения к данной функции представлен ниже:
откуда:
- Сообщение представляет собой некоторый текст;
- Тип определяет тип сообщения, которое включает в себя информационное, предупреждающее или сообщение о критической ошибке. Определенному типу ставится в соответствие некоторый значок. Именованная константа задает тип сообщения (табл. ниже).
- Кнопки выступают в качестве списка кнопок, которые отображаются в окне сообщения. В состав данного списка входят именованные константы, разделенные запятыми (табл. ниже), при этом весь список заключен в квадратных скобках. К примеру, для появления в окне сообщения кнопок OK и Cancel необходимо представить список Кнопки как [mbOk,mbCansel]. Помимо указанных в таблиц выше констант возможно применение и таких констант, как mbAbortRetryIgnore, а также mbYesNoCansel и др. Как правило, данные константы чаще используются в комбинациях командных кнопок диалоговых окон.
- КонтекстСправки означает параметр, обозначающий раздел справочной системы, который впоследствии выведется на экран при нажатии пользователем на клавишу F1. В случае отсутствия справочной системы, параметр КонтекстСправки должен быть приравнен нулю.
Значение функции MessageDlg определяет, на какую из командных кнопок щелкнул пользователь при работе с программой (табл. ниже).
Обновлено: 01 декабря, 2018
Простое диалоговое окно с кнопкой
Синтаксис:
ShowMessage (const Msg: string);
Пример:
ShowMessage('123');
1. ShowMessage
Диалоговое окно с заголовком Acaption
Синтаксис:
InputBox (const Acaption, APromt, ADefault: string): string;
Пример:
InputBox ('Acaption','APromt','ADefault');
2. InputBox
Окно сообщения Msg типа DlgTypeс кнопками Buttons в виде объекта формы
Синтаксис:
CreateMessageDialog (const Msg:string; DlgType; Buttons: TmsgDlgButtons): Tform;
Пример:
var AMsgDialog: TForm; ctrl : TControl; begin AMsgDialog := CreateMessageDialog('1 строка'+#13+'Сохранить?', mtWarning, [mbYes, mbNo]); with AMsgDialog do try Caption := 'Сохранение' ; Height := 140; Ctrl:=FindChildControl('Yes'); Case ShowModal of ID_YES: ; ID_NO: ; end; finally Free; end;
3. CreateMessageDialog
Стандартный диалог Windows для поиска каталога
Синтаксис:
SelectDirectory (const Caption: string; const Root: WideString; out Directory: string;): Boolean; overload;
Вызывает стандартный диалог Windows для поиска каталога. Задается root – корневой каталог, Directory – выбранный каталог.
Пример:
uses FileCtrl; ... var cd:string; begin if SelectDirectory('Dir', 'C:\', cD) then ShowMessage(''+cD);
4. SelectDirectory
Окно сообщения Msg типа DlgType
Синтаксис:
MessageDlg(const Msg:string; AType:TMsgType; AButtons: TmsgDlgButtons; HelpCtx:Longint): Word;
Окно сообщения Msg типа DlgType с набором кнопок Buttons, и системой справки HelpCtx.
Пример:
var buttonSelected : Integer; begin buttonSelected := MessageDlg('Confirmation',mtError, mbOKCancel, 0); if buttonSelected = mrOK then ShowMessage('OK'); if buttonSelected = mrCancel then ShowMessage('Cancel'); end.
5. MessageDlg
Функции MessageDlg и MessageDlgPos отображают окна, в которых пользователю задается вопрос и анализируется ответ. Различия между MessageDlg и MessageDlgPos заключается в том, что MessageDlg отображает окно в центре экрана, а MessageDlgPos – в позиции X,Y от левого верхнего угла.
Параметры Atype:
– mtWarning — окно замечаний
– mtError — окно ошибок
– mtInformation – информационное окно
– mtConfirmation — окно подтверждения
– mtCustom — окно без значка
Параметр Abuttons определяет, какие кнопки будут присутствовать (значение\надпись на кнопке):
– mbYes — Yes
– mbNo — No
– mbOK — OK
– mbCancel — Cancel
– mbHelp — Help
– mbAbort — Abort
– mbRetry — Retry
– mbIgnore — Ignore
– mbAll — All
Список кнопок заключается в [], поскольку параметр Abuttons является множественным. Пример: mbYesNoCancel.
Простое окно сообщение с одной кнопкой
Синтаксис:
ShowMessageFmt(const Msg:string; Params: array of const);
Отображает простое окно сообщения, формируемого из параметров Params строкой форматирования Msg.
Пример:
ShowMessageFmt('%s', ['Hi']);
6. ShowMessageFmt
Диалоговое окно сообщения Text с заголовком Caption
Синтаксис:
Aplication.MessageBox (Text, Caption:PChar; Flags:Longint): Integer;
Создает диалоговое окно сообщения Text с заголовком Caption. Параметр Flags определяет пиктограмму, набор кнопок и другие характеристики.
Пример:
var ret: integer; ... ret := Application.MessageBox(PChar('Вы хотите сохранить изменения?'),'Подтверждения',MB_YESNOCANCEL + MB_ICONQUESTION); if ret = IDYES then ShowMessage('YES') //если да else if ret = IDNO then close // если нет else exit; // если отмена
7. Aplication.MessageBox
Автор статьи
Программист Delphi, MySQL. Образование: высшее. Специальность: программное обеспечение информационных технологий.
(11 оценок, среднее: 5,00 из 5)
Загрузка…
Окна
диалогов 5
Процедура
ShowMessage
Модуль
Dialogs
procedure
ShowMessage(const Msg: string);
Отображает
окно сообщения с кнопкой OK.
Вызов
ShowMessage отображает простое
окно сообщения с кнопкой OK.
Текст сообщения задается параметром
Msg. Заголовок окна
совпадает с именем выполняемого файла
приложения.
При
необходимости анализировать ответ
пользователя на сообщение пользуйтесь
функцией Delphi MessageDlg.
Примеры:
1.)
ShowMessage(‘Работа приложения
успешно завершена.’);
2. ) В
приведенном ниже примере предполагается,
что целые переменные N1 и
N2 содержат соответствующие
числа, которые переводятся в строки
функцией IntToStr. Сообщение,
приведенное в этом примере проще
реализовать процедурой ShowMessageFmt.
ShowMessage(‘Задано
‘ + IntToStr(N1) + ‘ параметров из ‘
+
IntToStr(N2));
ShowMessageFmt
процедура
Модуль
Dialogs
procedure
ShowMessageFmt(const Msg: string; Params: array of const);
Отображает
окно форматированного сообщения с
кнопкой OK.
Вызов
ShowMessageFmt отображает окно
сообщения с кнопкой OK.
Параметр Msg задает
строку описания формата, а параметр
Params задает массив
параметров, форматируемых строкой Msg.
Заголовок окна совпадает с именем
выполняемого файла приложения.
Пример
ShowMessageFmt(‘Задано
%d параметров из %d
‘, [N1, N2]);
Функция
TApplication.MessageBox
function
MessageBox(Text, Caption: PChar; Flags: Longint): Integer;
Функция
MessageBox является методом переменной
Application типа TApplication, доступной в любом
проекте Delphi. Это метод является наиболее
удачным способом отображения диалоговых
окон. Он отображает диалоговое окно с
заданными кнопками, сообщением и
заголовком и позволяет проанализировать
ответ пользователя. Во многих отношениях
это окно подобно окнам, создаваемым
функциями MessageDlg и CreateMessageDialog. Но имеются
и существенные отличия, связанные с
возможностью русификации окна. Заголовок
окна может быть написан по-русски, что
отличает эту функцию от функции MessageDlg
(впрочем, в окне, созданном CreateMessageDialog,
это тоже можно сделать). Другим приятным
отличием являются русские надписи на
кнопках (в русифицированных версиях
Windows).
Функция
MessageBox инкапсулирует функцию MessageBox API
Windows.
Параметр
Text представляет собой текст сообщения,
которое может превышать 255 символов.
Для длинных сообщений осуществляется
автоматический перенос текста. Параметр
Caption представляет собой текст
заголовка окна. Он тоже может превышать
255 символов, но не переносится. Так что
длинный заголовок приводит к появлению
длинного и не очень красивого диалогового
окна.
Параметр
Flags представляет собой множество
флагов, определяющих вид и поведение
диалогового окна. Этот параметр может
комбинироваться операцией сложения по
одному флагу из следующих групп.
Флаги
кнопок, отображаемых в диалоговом окне.
Флаг Значение
(в скобках даны надписи в русифицированных
версиях Windows)
MB_ABORTRETRYIGNORE Кнопки
Abort (Стоп), Retry (Повтор) и Ignore (Пропустить).
MB_OK Кнопка
OK. Этот флаг принят по умолчанию.
MB_OKCANCEL Кнопки
OK и Cancel (Отмена).
MB_RETRYCANCEL Кнопки
Retry (Повтор) и Cancel (Отмена).
MB_YESNO Кнопки
Yes (Да) и No (Нет).
MB_YESNOCANCEL Кнопки
Yes (Да), No (Нет) и Cancel (Отмена).
Флаги
пиктограмм в диалоговом окне
MB_ICONEXCLAMATION,
MB_ICONWARNING Восклицательный знак
(замечание, предупреждение).
MB_ICONINFORMATION,
MB_ICONASTERISK Буква i в круге (подтверждение).
MB_ICONQUESTION Знак
вопроса (ожидание ответа).
MB_ICONSTOP,
MB_ICONERROR, MB_ICONHAND Знак креста на красном
круге
(запрет, ошибка).
Флаги,
указывающие кнопку по умолчанию (которая
в первый момент находится в фокусе)
MB_DEFBUTTON1 Первая
кнопка. Это принято по умолчанию.
MB_DEFBUTTON2 Вторая
кнопка.
MB_DEFBUTTON3 Третья
кнопка.
MB_DEFBUTTON4 Четвертая
кнопка.
Флаги
модальности
MB_APPLMODAL Пользователь
должен ответить на запрос, прежде чем
сможет продолжить работу с приложением.
Но он может перейти в окна другого
приложения. Он может также работать со
всплывающими окнами данного приложения.
Этот флаг принят по умолчанию.
MB_SYSTEMMODAL То же самое, что MB_APPLMODAL, но окно
диалога отображается в стиле WS_EX_TOPMOST,
то есть всегда остается поверх других
окон, даже если пользователь перешел к
другим приложениям. Используется для
предупреждения о серьезных ошибках,
требующих немедленного вмешательства.
Некоторые
дополнительные флаги (могут задаваться
оба флага)
Флаг Пояснение
MB_HELP Добавляет
в окно кнопку Help (Справка), щелчок на
которой или нажатие клавиши F1 генерирует
событие Help.
MB_TOPMOST Помещает
окно всегда сверху (в стиле WS_EX_TOPMOST).
Возможны
еще некоторые флаги, определяющие
характер поведения окна при работе в
сети нескольких пользователей, позволяющие
отображать тексты справа налево (для
восточных языков) и т.п.
Функция
возвращает нуль, если не хватает памяти
для создания диалогового окна. Если же
функция выполнена успешно, то возвращаемая
величина свидетельствует о следующем:
Значение Численное
значение Пояснение
IDABORT 3 Выбрана
кнопка Abort (Стоп).
IDCANCEL 2 Выбрана
кнопка Cancel (Отмена) или нажата клавиша
Esc.
IDIGNORE 5 Выбрана
кнопка Ignore (Пропустить).
IDNO 7 Выбрана
кнопка No (Нет).
IDOK 1 Выбрана
кнопка OK.
IDRETRY 4 Выбрана
кнопка Retry (Повтор).
IDYES 6 Выбрана
кнопка Yes (Да).
Ниже
приведен текст, предусматривающий
проверку правильности ввода данных
перед пересылкой записи в базу данных.
if
(проверка введенных данных)
then
begin
if
(Application.MessageBox(
‘Хотите занести текущую запись в базу
данных?’,
‘Подтвердите занесение в базу данных’,
MB_YESNOCANCEL + MB_ICONQUESTION) <> IDYES)
then begin
DataSet.Cancel;
Abort;
end
end
else begin
Application.MessageBox(‘Ошибочные данные’,’Ошибка’,
MB_ICONSTOP);
Abort;
end;
MessageDlg
– функция
Модуль Dialogs
function
MessageDlg(const Msg: string; AType: TMsgDlgType;
AButtons: TMsgDlgButtons;
HelpCtx: Longint):
Word;
Отображает
диалоговое окно сообщений в центре
экрана.
Вызов
MessageDlg отображает диалоговое окно и
ожидает ответа пользователя. Сообщение
в окне задается параметром функции Msg.
Вид
отображаемого окна задается параметром
AType. Возможные значения этого
параметра:
Значение Описание
mtWarning Окно
замечаний, содержащее желтый восклицательный
знак.
mtError Окно
ошибок, содержащее красный стоп-сигнал.
mtInformation Информационное
окно, содержащее голубой символ «i».
mtConfirmation Окно
подтверждения, содержащее зеленый
вопросительный знак.
mtCustom Заказное
окно без рисунка. Заголовок соответствует
имени выполняемого файла приложения.
Параметр
AButtons определяет, какие кнопки будут
присутствовать в окне. Тип TMsgDlgBtns
параметра AButtons является множеством,
которое включает различные кнопки.
Возможные значения видов кнопок:
Значение Описание
mbYes Кнопка
с надписью ‘Yes’
mbNo Кнопка
с надписью ‘No’
mbOK Кнопка
с надписью ‘OK’
mbCancel Кнопка
с надписью ‘Cancel’
mbHelp Кнопка
с надписью ‘Help’
mbAbort Кнопка
с надписью ‘Abort’
mbRetry Кнопка
с надписью ‘Retry’
mbIgnore Кнопка
с надписью ‘Ignore’
mbAll Кнопка
с надписью ‘All’
Список
необходимых кнопок заключается в
квадратные скобки [ ], поскольку параметр
AButtons является множеством. Если внутри
скобок список отсутствует, в окне не
будет ни одной кнопки и пользователю
придется закрывать окно системными
кнопками Windows.
Кроме
множества значений, соответствующих
отдельным кнопкам, в Delphi определены три
константы, соответствующие часто
используемым сочетаниям кнопок:
Значение Описание
mbYesNoCancel
Включает в окно кнопки Yes, No и Cancel
mbOkCancel Включает
в окно кнопки OK и Cancel
mbAbortRetryIgnore Включает
в окно кнопки Abort, Retry и Ignore
Эти
константы являются предопределенными
множествами. Поэтому при их использовании
их не надо заключать в квадратные скобки
[ ].
Параметр
HelpCtx определяет экран контекстной
справки, соответствующий данному
диалоговому окну. Этот экран справки
будет появляться при нажатии пользователем
клавиши F1. Если вы справку не планируете,
при вызове MessageDlg надо задать нулевое
значение параметра HelpCtx..
Функция
MessageDlg возвращает значение, соответствующее
выбранной пользователем кнопке. Возможные
возвращаемые значения:
mrNone
mrAbort mrYes
mrOk
mrRetry mrNo
mrCancel
mrIgnore mrAll
Функция
MessageDlg очень полезна для быстрого создания
прототипа приложения и проверки
диалогового взаимодействия с пользователем.
Но у нее есть заметный недостаток: в
заголовках и надписях на кнопках тексты
английские, так что при использовании
русских сообщений получается смесь
русского с английским.
Имеется
также функция MessageDlgPos, во всем аналогичная
функции MessageDlg, но отображающее окно в
заданном месте экрана.
При
выводе простых сообщений без необходимости
анализировать ответ пользователя удобно
использовать другие процедуры Delphi —
ShowMessage и ShowMessageFmt.
Примеры:
1.
Заключительный диалог при окончании
работы приложения.
if
MessageDlg(‘Действительно хотите закончить
приложение?’,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
MessageDlg(‘Работа приложение закончена’,
mtInformation,
[mbOk], 0);
Close;
end;
Первый
вызов MessageDlg приводит к отображению окна
типа mtConfirmation с вопросом о завершении
приложения. Если пользователь нажимает
кнопку Yes, то выводится второе окно типа
mtInformation с сообщением о завершении.
1.
Сообщение об ошибке и замечание.
on Exception do
begin
MessageDlg(‘Произошла
ошибка.’, mtError,
[mbOk], 0);
MessageDlg(‘Будьте
внимательнее.
‘, mtWarning,
[mbOk], 0);
end;
3. В
каком-то диалоге, после редактирования
пользователем записи ему предлагается
вопрос о сохранении ее в базе данных.
Если пользователь выбирает кнопку Yes,
запись сохраняется методом Post; если
пользователь выбирает кнопку No, результаты
редактирования уничтожаются методом
Cancel; если же пользователь выбирает
кнопку Cancel, диалог закрывается.
case
MessageDlg(‘Занести запись
в БД?’,
mtCustom,
mbYesNoCancel, 0) of
mrYes: DataSet1.Post;
mrNo: DataSet1.Cancel;
mrCancel:
Close;
end;
В вызове
MessageDlg использован тип mtCustom, в результате
чего в заголовке окна указано имя
приложения. Для задания кнопок использована
константа mbYesNoCancel
Соседние файлы в папке _Delphi_1курс лекции
- #
23.03.20151.13 Mб23~WRL3549.tmp
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #