:: Visual Foxpro, Foxpro for DOS
Re: Ещё один вариант Messagebox()
_vit

Сообщений: 5243
Дата регистрации: 29.07.2002
of63
Это ответ и Виту

А Вит ответит так, что MessageBox предназначен для вывода сообщений
и регистраци реакции пользователя на них.
Пусть не все, но по крайней мере многие сообщения можно свести к форме, при которой стандартного набора кнопок будет достаточно.
Не думаю, что у кого то из присутствующих, разрабатываемое приложение по сложности интерфейса,
набору функций и колличеству сообщений даже отдаленно стоит рядом с Windows.
Но тем не менее MS как-то обходится тем набором который есть в системном MessageBox.
Так же можно дойти до создания MessageBoxUniversum накидав туда
всех возможных контролов на все случаи жизни и запихнув в него весь UI приложения.



Исправлено 1 раз(а). Последнее : _vit, 21.01.25 23:51
Ratings: 0 negative/1 positive
Re: Ещё один вариант Messagebox()
lemenev
Автор

Сообщений: 229
Дата регистрации: 23.06.2022
Я попытался разобраться с программой ask. Это был квест сопоставимый со всей библиотекой xMsg. Её разработчики попытались свести 37 функций исходной библиотеки к одной единственной с минимумом параметров (по сути – с двумя главными) – так как и хотел Taran. Да ещё и расширили функционал исходной библиотеки.
Но зато они засунули в эти 2 параметра по десятку разных сущностей, которые разбирают синтаксическим анализом. Но подобное присуще и родному MESSAGEBOX(). Кто сходу поймёт, что означает код 290. И даже если в комментарии написать, что 290 = 2+32+256, то не становится понятнее.

Разработчики программы ask анализируют, каким знаком завершается текст сообщения: «.», «!», «?» или никаким. В зависимости от этого они выбирают предопределённые иконку, звук, цветовую схему, размер и начертание шрифта. Если что-то не нравится, то во втором параметре можно легко всё поменять.

Для задания кнопок введены обозначения Y/N/ESC, которые формируют кнопки Да/Нет/Отмена, которые при нажатии формируют ответы Y/N/ESC. И ни каких числовых кодов. Всем кнопкам легко можно поменять надписи. Можно ввести до трёх дополнительных кнопок, которые при нажатии формируют ответы F1/F2/F3. Всё очень наглядно.

Мне кажется, что оно того стоит!

В приложении программа Ask, тесты по её применению и русское описание.



Исправлено 2 раз(а). Последнее : lemenev, 23.01.25 12:56
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
of63

Сообщений: 26001
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
_vit
of63
Это ответ и Виту

А Вит ответит так, что MessageBox предназначен для вывода сообщений
и регистраци реакции пользователя на них.
Пусть не все, но по крайней мере многие сообщения можно свести к форме, при которой стандартного набора кнопок будет достаточно.
Не думаю, что у кого то из присутствующих, разрабатываемое приложение по сложности интерфейса,
набору функций и колличеству сообщений даже отдаленно стоит рядом с Windows.
Но тем не менее MS как-то обходится тем набором который есть в системном MessageBox.
Так же можно дойти до создания MessageBoxUniversum накидав туда
всех возможных контролов на все случаи жизни и запихнув в него весь UI приложения.

я тебе ответил - ты истино правильно говоришь (золотые слова), с кодом-примером, но он куда-то делся...
Приложил проги - генераторы запроса да/нет и другие (множественный выбор, радиокнопками выбор, значения, меню с подменю...), наверное слишком большой код проги нельзя указать в тексте сообщения... Щас приложу ZIP-ом... как у нас все допотопно в ИДЕ... Вспомнил смешной перевод Гоблина "как ты постарел!", про старшего сумкина )



Исправлено 1 раз(а). Последнее : of63, 23.01.25 21:05
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
Каратаев

Сообщений: 4049
Откуда: Алматы
Дата регистрации: 04.12.2001
[quote lemenev]Я попытался разобраться с программой ask.
Немного потестировал для интереса... Всё бы ничего, даже чтение голосом на русском... Но никакие ухищрения не смогли уменьшить эту форму по горизонтали. Указания параметра cMaxSize влияет только на высоту. А ширина у меня во весь экран практически...
Может это только у меня так?


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
lemenev
Автор

Сообщений: 229
Дата регистрации: 23.06.2022
Каратаев
никакие ухищрения не смогли уменьшить эту форму по горизонтали

Можно расставить в тексте сообщения знаки точки с запятой. В этих местах текст будет переноситься на новую строку.

Вот этот код работает
msg = 'Простое сообщение - без звука, без иконки'
ask(msg)
ask(msg,,,,"200,200")



Исправлено 1 раз(а). Последнее : lemenev, 24.01.25 13:58
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
Каратаев

Сообщений: 4049
Откуда: Алматы
Дата регистрации: 04.12.2001
Да код-то работает... Я вот про что говорю:
[attachment 37051 msg.png]
По ширине во весь экран...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
akvvohinc

Сообщений: 4561
Откуда: Москва
Дата регистрации: 11.11.2008
Каратаев
Указания параметра cMaxSize влияет только на высоту.
Задай этот параметр как "ширина, высота" и всё получится.
Если высота не волнует, то всё равно укажи её нулевой.

Но в любом случае, если я правильно понял, соответствующий размер не будет больше, чем тот, которого достаточно для вывода.
То есть если сообщение нормально выводится при ширине W, то увеличение W не приведет к увеличению ширины окна.
А вот уменьшить меньше необходимого можно.
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
akvvohinc

Сообщений: 4561
Откуда: Москва
Дата регистрации: 11.11.2008
Каратаев
По ширине во весь экран...
А вот такого у меня не происходит.
Видимо, где-то неверно определяются параметры твоего экрана.

А от длины текста сообщения ширина окна зависит?
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
lemenev
Автор

Сообщений: 229
Дата регистрации: 23.06.2022
У меня работают все ограничения:

msg = 'Эндокринолог Мария Калошина посоветовала россиянам не пытаться любой'+;
' ценой выпивать два литра воды в день. При этом, по словам врача,'+;
' индивидуальную норму может рассчитать только диетолог с учетом образа жизни,'+;
' характера работы и других факторов.'
ask(msg) && без ограничения
ask(msg,,,,"200,0") && ограничение по ширине
ask(msg,,,,"200,200") && ограничение по ширине и высоте
ask(msg,,,,"0,100") && ограничение по высоте
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
sphinx

Сообщений: 31893
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Миш, а что не так?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Ещё один вариант Messagebox()
lemenev
Автор

Сообщений: 229
Дата регистрации: 23.06.2022
sphinx
Миш, а что не так?
Саш, при нормальном поведении программы ширина окна сообщения пропорциональна длине текста или равна заданным ограничениям. У Александра это окна растягивается во весь экран. Так быть не должно. Почему это так, все те, кто откликнулись, не знают.

Каратаев
По ширине во весь экран...
А если попробовать «от печки».
  • Родная фоксовская MESSAGEBOX() показывает правильно?
  • Программа Ask обращается к функциям библиотеки xMsg80. Попробуйте запустить примеры к этой библиотеке. Все ли они показывают неправильно?
  • Библиотека xMsg80 показывает сообщение двумя способами: через функцию xmsg_ShowDialog или через связку xmsg_SetDlgMonitor и MESSAGEBOX(). Попробуйте оба пути. Это пример _runme1st.PRG.

    Примеры прикладываю.
    Ratings: 0 negative/0 positive
  • Re: Ещё один вариант Messagebox()
    _vit

    Сообщений: 5243
    Дата регистрации: 29.07.2002
    lemenev
    Кто сходу поймёт, что означает код 290. И даже если в комментарии написать, что 290 = 2+32+256, то не становится понятнее.

    Цитата:
    Дополнительная информация о константах доступна в файле FoxPro.h, расположенном в основном каталоге Visual FoxPro.
    Использование определяемых констант типа MB_ABORTRETRYIGNORE + MB_ICONQUESTION + MB_DEFBUTTON2 может быть более читаемо чем 2 + 32 + 256.

    Кроме того

    Цитата:
    Обратите внимание:
    Вопросительный знак использовать больше не рекомендуется, потому что он не отражает определенный тип сообщения и потому что формулирование сообщения в виде вопроса может быть отнесено к любому типу сообщения.
    Кроме того, пользователи могут путать вопросительный знак со Справочной информацией.
    Поэтому, не рекомендуют использовать символ вопросительного знака в ваших окнах сообщения.
    Система продолжает поддерживать его только для обратной совместимости.

    help.foxclub.ru
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    lemenev
    Автор

    Сообщений: 229
    Дата регистрации: 23.06.2022
    _vit
    Использование определяемых констант типа MB_ABORTRETRYIGNORE + MB_ICONQUESTION + MB_DEFBUTTON2 может быть более читаемо чем 2 + 32 + 256.
    Я согласен. Использование таких констант более читаемо, но ещё нагляднее обозначение [Y/N/ESC]. Да и возврат значений Y/N/ESC нагляднее, чем коды.

    _vit
    Вопросительный знак использовать больше не рекомендуется, потому что он не отражает определенный тип сообщения и потому что формулирование сообщения в виде вопроса может быть отнесено к любому типу сообщения.
    Я не согласен. Если предложение заканчивается знаком вопроса, то оно вопросительное. И никак иначе. Если точкой – то повествовательное, если восклицательным знаком – то утвердительное. Тут не перепутать.

    _vit
    Кроме того, пользователи могут путать вопросительный знак со Справочной информацией.
    В моих разработках нет справочной информации, встроенной в программу. Так что не с чем перепутать. Мне кажется, что вообще крайне мало кто заморачивается встраивать справочную информации в программу.
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    of63

    Сообщений: 26001
    Откуда: Н.Новгород
    Дата регистрации: 13.02.2008
    () Есть такое, про вопросы/сообщения_предупрельтельные/сообщения_о_невозможности действия программы, юзеры не понимают и в малой части текстов сообщений (если им не предписано их читать и реагировать по инструкции), а сообщений о неверности в принимаемых данных может быть не сильно мало, и довольно редких (например, связанных с адресами МЖ, который не очень определен в формате "стандартов" РФ, ФНС вроде выступает единственным стандартом адресов, ГАР, ранее ФИАС). Пока "идея" простая - писать в сообщении больше, сильномногострочный1 текст, с подсказками решения... Заморочно конечно, когда пишешь прогу, то ошибка в этой точке проги понятна, но даже сам, когда встречается эта ошибка, в этой точке программы, то сам себя ругаю - чтож де уподробил-то, суть не разьяснил в тексте. Это отражает качество проги тоже - сообщения об ошибках и предупреждения...

    Также малополезны оказались варианты ответов о сообщения/предупреждениях - прервать/продолжить (игнорировать иногда можно) - эти вопросы вызывают ступор у юзеров, они отвечают как попало... Сделать предлагаю с разделением на группы юзеров - продвинуты/обычные. Но писать текстов сообщений и реакций на них придется больше...
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    of63

    Сообщений: 26001
    Откуда: Н.Новгород
    Дата регистрации: 13.02.2008
    > крайне мало кто заморачивается встраивать справочную информации в программу.

    Это точно не так! Даже формально, ты обязан иметь справочную информацию, (в текстовом виде точно, хотя бы для ответа на вопрос проверяющих инстанций "у тебя есть описание программы?") Да и просто, в фоксе есть управляемая реакция на кнопку F1 (или SET HELP TO кнопка, не помню), но есть, даже контекстнозависимая (можно присвоить ИД обьектам, и F1 будет попадать на нужный раздел справки, В нащем случае оказалось не нужно по причине, что юзеры не нажимают F1, но опускают руки, или звонят разрабу, что вот де ошибка, текст ошибки не читают... правда я тоже особо не расписываю... пишется специфика в лог, могу его читать...
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    Каратаев

    Сообщений: 4049
    Откуда: Алматы
    Дата регистрации: 04.12.2001
    lemenev
    У меня работают все ограничения:
    msg = 'Эндокринолог Мария Калошина посоветовала россиянам не пытаться любой'+;
    ' ценой выпивать два литра воды в день. При этом, по словам врача,'+;
    ' индивидуальную норму может рассчитать только диетолог с учетом образа жизни,'+;
    ' характера работы и других факторов.'
    ask(msg) && без ограничения
    ask(msg,,,,"200,0") && ограничение по ширине
    ask(msg,,,,"200,200") && ограничение по ширине и высоте
    ask(msg,,,,"0,100") && ограничение по высоте
    Я понял причину! У меня на работе экран разделён на 2: один ноутбук, а второй ставил доп. монитор большой... Удобно... Что-то в одном окне, что-то в другом... При разработке бывает полезно.
    Запускал код дома - там всё нормально, и по ширине, и по высоте как укажешь, так и отображает. А на работе видимо считывается экранное пространство с двух мониторов... Как-то так...


    ------------------
    Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    BOBAN

    Сообщений: 645
    Откуда: Солигорск
    Дата регистрации: 05.07.2004
    lemenev
    В моих разработках...

    Интересно просто. И что дальше ? Многие ли готовы менять свои устоявшиеся MessageBox'ы в своих устоявшихся приложениях или просто академический интерес ?



    Исправлено 1 раз(а). Последнее : BOBAN, 28.01.25 11:16
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    alex;

    Сообщений: 3406
    Откуда: Москва
    Дата регистрации: 23.11.2004
    BOBAN
    lemenev
    В моих разработках...

    Интересно просто. И что дальше ? Многие ли готовы менять свои устоявшиеся MessageBox'ы в своих устоявшихся приложениях или просто академический интерес ?

    У меня разработка не стоит на месте, недавно был момент, задумался об использовании расширенного сообщения об ошибке.
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    lemenev
    Автор

    Сообщений: 229
    Дата регистрации: 23.06.2022
    BOBAN
    Интересно просто. И что дальше ? Многие ли готовы менять свои устоявшиеся MessageBox'ы в своих устоявшихся приложениях или просто академический интерес ?
    Собственно alex; уже ответил. Есть некий новый инструмент. Хочешь – применяй, не хочешь – не применяй.

    Каратаев
    Я понял причину!
    Поздравляю!

    of63
    Это точно не так! Даже формально, ты обязан иметь справочную информацию, (в текстовом виде точно, хотя бы для ответа на вопрос проверяющих инстанций "у тебя есть описание программы?") Да и просто, в фоксе есть управляемая реакция на кнопку F1 (или SET HELP TO кнопка, не помню), но есть, даже контекстнозависимая (можно присвоить ИД обьектам, и F1 будет попадать на нужный раздел справки, В нащем случае оказалось не нужно по причине, что юзеры не нажимают F1, но опускают руки, или звонят разрабу, что вот де ошибка, текст ошибки не читают... правда я тоже особо не расписываю... пишется специфика в лог, могу его читать...

    Ты подтверждаешь мои слова. Справочную информацию в текстовом виде иметь нужно. Но встраивать её в программу… «юзеры не нажимают F1», а тогда зачем? Вносить новые ошибки в программу?
    Ratings: 0 negative/0 positive
    Re: Ещё один вариант Messagebox()
    of63

    Сообщений: 26001
    Откуда: Н.Новгород
    Дата регистрации: 13.02.2008
    > Справочную информацию в текстовом виде иметь нужно. Но встраивать её в программу… «юзеры не нажимают F1», а тогда зачем? Вносить новые ошибки в программу?

    Ошибка, внесенная в ошибку не считается ошибкой. См. булев закон поглощения ошибок (не путать с з-ном четности ошибок) )

    Обычный пользователь программы это человек, конечно. Его обучили, набору действий, штатных (простых) действий с клиентом и компьютером. Но, когда ситуация нештатная, то пользователь, как маленькая обезьянка, начинает ПРОБОВАТЬ (лихорадочно, "интуитивно") разные варианты действий с программой. И вот тут ваша прога и должна этому попытаться противостоять, а именно набором "проверок" на каждое неадекватное действие юзера. Про адекватные выбора юзера - это реагирует любая прога, а на неадекватные - не любая.



    Исправлено 1 раз(а). Последнее : of63, 29.01.25 01:27
    Ratings: 0 negative/1 positive


    Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

    On-line: 11 (Гостей: 11)

    © 2000-2025 Fox Club 
    Яндекс.Метрика