|
|
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Имеется обычный диалог с кнопкой OK с ModalResult = mrOk Необходимо по нажатию на эту кнопку сделать проверку данных в диалоге и если проверка не прошла, то вывести сообщение и не закрывать диалог, т.е. не выпускать из него пока правильно всё не введут. Если в обработчике события onClick этой кнопки делать Exit, то диалог всё равно закроется. Как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 14:21 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
verter, OnCloseQuery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 14:24 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Или снять ModalResult и выставлять его вручную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 14:31 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Gerasimenko verter, OnCloseQuery Спасибо! Извините за такой глупый вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 14:32 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
verter Gerasimenko verter, OnCloseQuery Спасибо! Извините за такой глупый вопрос. Плохое решение, потому что оно будет отрабатывать и при нажатии кнопки "отмена" и при закрытии окна через Alt-F4 и при завершении работы системы. Правильнее убрать ModalResult у кнопки Ok и назначать его по результатам проверки в OnClick. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 15:22 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
alekcvp verter пропущено... Спасибо! Извините за такой глупый вопрос. Плохое решение, потому что оно будет отрабатывать и при нажатии кнопки "отмена" и при закрытии окна через Alt-F4 и при завершении работы системы. Правильнее убрать ModalResult у кнопки Ok и назначать его по результатам проверки в OnClick. Если мозги отключены, то да. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 15:40 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 15:50 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Gerasimenko, Зачем городить костыли, если есть OkButton.OnClick?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2021, 18:50 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
alekcvp Gerasimenko, Зачем городить костыли, если есть OkButton.OnClick?.. По хорошему, до нажатия кнопки не должно доходить вообще, от слова совсем. Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 08:26 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Свойство ModalResult у твоей кнопки должно быть mrNone, тогда по её нажатию окно закрываться не будет. В OnClick этой кнопки, когда наши проверки показали нам, что можно закрывать окно с определенным modalresult, назначаем self.modalresult := mrOk (или какой-то другой, кроме mrNone), и окно закроется "само собой" по выходу из процедуры, никаких дополнительных действий для его закрытия предпринимать не надо, а ShowModal, которым мы открывали эту форму, вернёт mrOk (или что мы там выбрали). Товарищи уже сказали то же самое выше дважды, я немного развернул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 09:05 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
del ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 09:07 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 10:37 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
alekcvp Плохое решение, потому что оно будет отрабатывать и при нажатии кнопки "отмена" и при закрытии окна через Alt-F4 и при завершении работы системы. Правильнее убрать ModalResult у кнопки Ok и назначать его по результатам проверки в OnClick. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 12:54 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Gerasimenko По хорошему, до нажатия кнопки не должно доходить вообще, от слова совсем. Gluck99 До завершения работы системы надо сначала закрыть модальное окно. OnCloseQuery самый адекватный вариант, без костылей с переназначением ModalResult для кнопок, что может привести к лишней обработке ошибок между проверкой введенных данных и обратным назначением кнопке ModalResult. Я уже не говорю о ситуации, когда кнопок больше двух и нужны многочисленные разнообразные проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 18:47 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
alekcvpИногда бывает что для валидации надо запрос в БД делать, вешать такие вещи на OnChange ИМХО не очень. Это становится особенно "не очень", когда проверяется значение изменяемого поля в зависимости от других полей. Простейший пример - двойное введение пароля при такой проверке становится вообще невозможно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 19:11 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Простейший пример - двойное введение пароля при такой проверке становится вообще невозможно. У меня обычно в диалогах есть процедура ValidateInput(), которая вызывается из всех OnChange() или OnClick() и проверяет значение всех введённых данных на форме. Очень удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 22:29 |
|
||
|
Как не закрывать диалог по нажатию на кнопку OK?
|
|||
|---|---|---|---|
|
#18+
alekcvpЕсли в результате проверки просто включается или выключается кнопка, то возможно. Ну да, если просто поле с неверными данными просто подсвечивается и сообщение что именно с ним не так торчит ненавязчиво, то это будет работать. Просто некоторые при проверке вываливают сообщение ShowMessage('что-то неправильно')... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2021, 23:29 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40036322&tid=2037702]: |
0ms |
get settings: |
5ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 472ms |

| 0 / 0 |
