|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Приветствую, коллеги! Подскажите, как заменить сообщение о том, что не заполнено обязательное поле, своим? Оно, зараза, появляется раньше события LostFocus текст-бокса. В других событиях типа Change, AfterUpdate и пр. проверка на Null сама по себе не уместна. А системное сообщение для пользователя непонятно... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 13:29 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
А имеется ввиду поле чего?? Поле формы или таблицы? Сообщение-то от таблицы ИМХО идет при попытке добавления или обновления записи. что за форма? Обычная, ленточная, табличная ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 15:18 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Beliar Приветствую, коллеги! Подскажите, как заменить сообщение о том, что не заполнено обязательное поле, своим? Оно, зараза, появляется раньше события LostFocus текст-бокса. В других событиях типа Change, AfterUpdate и пр. проверка на Null сама по себе не уместна. А системное сообщение для пользователя непонятно... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 15:57 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
в свойствах поля таблицы-будет работать в форме: если же хотите только в форме после потери фокуса полем используйте событие "до обновления" с его дальнейшей отменой ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 16:52 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
ПыСы:Если же хотите в форме-используйте событие "до обновления" поля с его дальнейшей отменой при этом фокус остается в поле до его(поля) заполнения(до заполнения "выйти" из поля не возможно)-при этом сообщение в свойствах таблицы следует оставить(на случай если юзер вообще не будет "заходить" в это поле до сохранения записи). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 17:07 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Вообщем так: в событии "До обновления" системное сообщение остается, только теперь после моего. А для применения Response нужно знать код ошибки, в системном msg-боксе он не указан. А вот вариант с изменением свойств поля в таблице для данного случая весьма хорош. Только вот в окне сообщения наличествует кнопка "справка", ее бы или отключить или прописать как-то содержание справки. К тому же приходиться значение свойства "обязательное поле" менять на "нет". Если вместо этого изменить аналогичные свойства у контрола на форме, то сообщение выходит только с кнопкой "ОК". Только значок неправильный: типа vbInformation вместо vbExlamation. Желательно бы вариант на форме отработать. Ведь, в другой ситуации в таблице-источнике, возможно, менять ничего нельзя будет. Можно ли как-то задать свойства этих окошек? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 12:04 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
как то так и фсе....: ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 13:25 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
ПыСы: что касается вида окна и кнопок на нем-см. аргументы ф-ции msgbox ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 13:32 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
sdku ПыСы: что касается вида окна и кнопок на нем-см. аргументы ф-ции msgbox ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 13:59 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Beliar, Селайте запись в форме, не заполняя обязательное поле, в том файле что приложен к моему сообщению, и ответьте на один простой вопрос:где Вы увидели системное сообщение? И ЧТО это как не вызов функции MSGBOX при пустом поле2 Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 17:47 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
sdku, То, что Вы показали - и есть вызов функции msgbox, а системный msgbox - те, я показал на скриншотах, и их опционально не изменить. Ну или только я не знаю, как изменить. Опять всё перемешалось в обсуждении. Надо разделить на 3 ветви. Ситуация: пользователь пытается уйти из текст-бокса, оставив его пустым. Необходима соответствующая реакция интерфейса, пресекающая данное действие, и чтоб пользователю было понятно, что от него хотят. Вариант1. В таблице-источнике свойство поля "обязательное поле" в значении "да". Реакция: выходит системное сообщение с непонятным для пользователя текстом. Мимо! Вариант2. В таблице источнике значение в "Условие на значение" прописываем "Is Not Null" и текст сообщения об ошибке. "обязательное поле" приходится менять на "нет", иначе сначала срабатывает Вариант1. Реакция: выходит сообщение (системный msgbox) с нашим текстом и значком типа vbExclamation и кнопками "ОК" и "Справка". Не даёт уйти с поля. Все как надо, но кнопка "Справка" лишняя, либо нужно подсунуть справку. Варинат3. В таблице-источнике ничего не меняем, а на форме в свойствах контролла указываем в "Условии на значение" - "Not Is Null" текст ошибки. Реакция: выходит сообщение (системный msgbox) с нашим текстом и одной кнопкой "ОК" и значком vbInformation, что не соответствует виду сообщения об ошибке. Так же не дает покинуть поле. Т.е. чуть лучше Варианта2. Вариант4. Не трогаем ничьи свойства, обрабатываем событие BeforUpdate, проверяем функцией IsNull(), вызываем MsgBox с нужными опциями (кнопка "OK"+значок). Не важно куда прописываем, в обработку действий с msgbox или прямо в тело условного оператора if, проверяющего значение IsNull(), ни там и там не срабатывают ни метод undo, ни оператор exit sub, метод SetFocut вообще в этом событии нельзя применять. Реакция: сообщение-то выходит, но фокус все равно передается в другой контролл, поле остается пустым, прежнее значение не возвращается. Если свойство "обязательное поле" в источнике в значении "да", то вперед всего срабатывает Вариант1. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
или так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
В других событиях, типа AfterUpdate или LostFocus все так же. Ну может, я что-то не так делаю... честно говоря, дымок из ушей пошел ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 08:26 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Beliar, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 10:34 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
__Michelle Beliar, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Вот Michelle всегда бьет в яблочко! Я про Cancel вообще напрочь забыл. Вариант с решением предпочтительнее, т.к. далеко не всегда можно баловаться со свойствами в таблице-источнике. Спасибо огромнейшее! Вопрос исчерпан! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 11:19 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
sdku .... Код: vbnet 1. 2. 3.
Beliar __Michelle Beliar, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Вот Michelle всегда бьет в яблочко! Я про Cancel вообще напрочь забыл. Вариант с решением предпочтительнее, т.к. далеко не всегда можно баловаться со свойствами в таблице-источнике. Спасибо огромнейшее! Вопрос исчерпан! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 12:17 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
sdku, бывает, что не замечу чего-нибудь. заспорили из-за msgbox, и всё... глаза затуманило))) прошу прощения. Спасибо всем вам. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 14:32 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Beliar sdku,...а системный msgbox - те, я показал на скриншотах, и их опционально не изменить. значок не смените, только содержание ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 15:57 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Ну, содержание-то понятно. Beliar Реакция: выходит сообщение (системный msgbox) с нашим текстом и значком типа vbExclamation и кнопками "ОК" и "Справка". А вот значок, кнопки, справка... да и хр с ними. Есть более предпочтительное решение ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 11:18 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Beliar Есть более предпочтительное решение ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 13:16 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Панург Beliar ... А для применения Response нужно знать код ошибки, в системном msg-боксе он не указан... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 14:13 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Beliar, а в чём проблема выяснить при возникновении события? Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 15:37 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
__Michelle Код: vbnet 1.
__Michelle Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 15:46 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Панург __Michelle Код: vbnet 1.
__Michelle Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 08:33 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
[quot Beliar#22365242] Панург пропущено... и такого я бы не стал делать, пусть пользователь решает - дописать или скинуть (Esc). Верно говорите. Все undo я сразу убрал. Они фигурировали, пока мне не протёрли шары вот этим: Cancel = True Панург Beliar, а в чём проблема выяснить при возникновении события? Код: vbnet 1. 2. 3.
Ну, я выяснил код ошибки, прямо в этом событии. 3314. Теперь всё просто, казалось бы. Отменяю появление системного сообщения об ошибке (Response = acDataErrContinue), подкидываю свой msgbox (правда, содержание будет уже какое-то обобщенное, а не по данной ситуации). Дальше ошибка 2169, и, либо форма не закрывается, либо возвращается прежнее значение поля. Всё классно. НО! я тут же понял, что это, мягко говоря, не очень мудрое решение. Как системой "Град" по огородным вредителям. В моем примере-то ничего, а вот в общем... я, ведь, таким образом перехватываю появление системного сообщения во всех случаях возникновения ошибки с конкретным кодом во всех событиях на форме. А случаи бывают разные, и реакция может потребоваться разная. Решение проблемы в событии BeforeUpdate самого контрола куда более точечное и деликатное. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 08:49 |
|
заменить системное сообщение
|
|||
---|---|---|---|
#18+
Beliar вот в общем... я, ведь, таким образом перехватываю появление системного сообщения во всех случаях возникновения ошибки с конкретным кодом во всех событиях на форме. Beliar Решение проблемы в событии BeforeUpdate самого контрола куда более точечное и деликатное. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 09:13 |
|
|
start [/forum/topic.php?fid=45&msg=40093728&tid=1609607]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
3856ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 3961ms |
0 / 0 |