powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Модальный позор
25 сообщений из 124, страница 2 из 5
Модальный позор
    #40120122
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev
Какой именно баг ?
17877582
Dmitry Arefiev
Как именно выгребаешь ?
При переводе очередного проекта на новые версии все ломается, а потом я вспоминаю об исправленном баге
...
Рейтинг: 0 / 0
Модальный позор
    #40120126
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
При переводе очередного проекта на новые версии все ломается, а потом я вспоминаю об исправленном баге

Ты сам пишешь, что понадобился день на исправление. Я думаю, это в высшей степени приемлемая цена за несохранение старых багов в новых версиях.
...
Рейтинг: 0 / 0
Модальный позор
    #40120128
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Dmitry Arefiev
Какой именно баг ?

Есть в трекере Эмбы ? Если только тут, то = нет.
...
Рейтинг: 0 / 0
Модальный позор
    #40120131
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev
Есть в трекере Эмбы ?
Что должно быть в трекере? "Верните баг!"
...
Рейтинг: 0 / 0
Модальный позор
    #40120132
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Ты сам пишешь, что понадобился день на исправление.
Да. Но после того, как исправление проявилось, и долгого раскуривания "А что же пошло не так"
...
Рейтинг: 0 / 0
Модальный позор
    #40120133
virtual member
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, вы читать умеете? Перечитайте топик и уясните уже, что советов здесь никто не просил. Тем более у личностей, которым клеймо biohazard ставить негде.

А позор из заголовка топика -- это когда использование совершенно штатных методов без малейших признаков шаманства приводит приложение в такое состояние, в котором оно просто не должно быть ни при каких раскладах.
...
Рейтинг: 0 / 0
Модальный позор
    #40120134
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virtual memberиспользование совершенно штатных методов без малейших признаков шаманства

О чём ты говоришь? В Windows НЕТ штатных средств создания модального окна за
исключением диалогового (что не для слабонервных). TForm.ShowModal это
изначально кривоватый костыль, у которого приходится удивляться не глюкам, а
тому, что оно хоть как-то работает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120138
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
В Windows НЕТ штатных средств создания модального окна за
исключением диалогового (что не для слабонервных)
Что там "не для слабонервных"?
Почему в VCL было не реализовать модальность через DialogBoxIndirectParam (или как там оно) - тайна. Оконная функция "не такая"? Элементарно обходится, зато глюков нет, включая глюки из-за доп. цикла выкрутки сообщений, при появлении которого (в сторонней dll, например) дельфовые модальные окна вообще закрываться перестают, т.к. "туда не доходит".
Я VCL-окна не использую давно из-за этого (только в одной уже старой программе и для тестов), т.к. для меня это непобедимая проблема - цикл с проверкой на переменную ModalResult, который теряет управление.
...
Рейтинг: 0 / 0
Модальный позор
    #40120148
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Почему в VCL было не реализовать модальность через DialogBoxIndirectParam (или как там оно) - тайна.

Думаю, в этом случае "глюки дельфовой модальности" вспоминались бы с детской нежностью.

YuRock
включая глюки из-за доп. цикла выкрутки сообщений

Первопричиной этих "глюков" я бы назвал существование синхронного ModalResult (то есть желание писать код в стиле if ShowModal = mrOk then). Этот аспект перпендикулярен внутренней реализации ShowModal - хоть так как есть, хоть через DialogBoxIndirectParam, хоть как угодно ещё.

YuRock
при появлении которого (в сторонней dll, например)

И это точно глюк именно Delphi?
...
Рейтинг: 0 / 0
Модальный позор
    #40120213
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
то есть желание писать код в стиле if ShowModal = mrOk then). Этот аспект перпендикулярен внутренней реализации ShowModal
Нормальное желание при показе модальных форм. Совсем не перпендикулярен этот аспект.
softwarer
YuRockпри появлении которого (в сторонней dll, например)

И это точно глюк именно Delphi?Да, точно, модальное окно должно закрываться вне зависимости от того, какой цикл сейчас работает, а в Delphi это не так.
...
Рейтинг: 0 / 0
Модальный позор
    #40120218
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЧто там "не для слабонервных"?
Почему в VCL было не реализовать модальность через DialogBoxIndirectParam (или
как там оно) - тайна.

Масштабы, например. Хотя, если посмотреть на текущее состояние дел, может,
именно это могло быть самым большим плюсом.

Ну и скудный выбор доступных контролов. Попугашистости не хватает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120226
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Ну и скудный выбор доступных контролов.
Это тут не при чём вообще. Все делфовые контролы прекрасно бы лягли на такой диалог.
Тут вопрос скорей возникнет - а как же Synchronize обрабатывать? Это да, беда. Хотя раньше такой беды не было.
...
Рейтинг: 0 / 0
Модальный позор
    #40120228
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockВсе делфовые контролы прекрасно бы лягли на такой диалог.

Что надо запихать в шаблон для TDBGrid, например?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120229
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Да, точно, модальное окно должно закрываться вне зависимости от того, какой цикл сейчас работает, а в Delphi это не так.

Я не понимаю, как ты это себе технически представляешь.

Допустим, речь идёт об одном потоке. В нём есть модальное окно. Это означает, что есть цикл обработки сообщений, в нём обрабатывалось какое-то сообщение, и эта обработка вызвала модальное окно. Сейчас она ждёт возврата из ShowModal, чтобы продолжиться.

Теперь откуда-то есть ещё один цикл. Он "сейчас работает" и сообщение в нём должно закрыть модальное окно. "Сейчас работает" означает, что он по стеку вызовов ниже ShowModal, а "должен закрыть" - то, что должен произойти возврат из ShowModal в код выше по стеку.

По-моему, такое возможно только если по этому сообщению первым делом закроется сам "ещё один цикл" вместе с кодом, в котором он работает.

Я бы сказал - кривизна в самой идее наличия в одном потоке нескольких циклов обработки сообщений. Даже в том варианте, в котором она в дельфе. И уж тем более - когда появляется ещё какой-то, несогласованный с ними отдельный цикл. Глюки... неудивительны, говоря деликатно.
...
Рейтинг: 0 / 0
Модальный позор
    #40120233
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
YuRockВсе делфовые контролы прекрасно бы лягли на такой диалог.

Что надо запихать в шаблон для TDBGrid, например?Ничего. Создать окно грида динамически с парентом-хендлом диалога.
...
Рейтинг: 0 / 0
Модальный позор
    #40120236
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
По-моему, такое возможно только если по этому сообщению первым делом закроется сам "ещё один цикл" вместе с кодом, в котором он работает.
Нет, конечно, не только. Другой цикл прекрасно может обработать сообщение нажатия кнопки, по которому произойдет закрытие и убиение с экрана и памяти модального окна.
softwarer
Я бы сказал - кривизна в самой идее наличия в одном потоке нескольких циклов обработки сообщений.
Это не кривизна, а просто сложность при работе через рекурсию.
softwarer
Даже в том варианте, в котором она в дельфе
В таком - она просто невозможна.
softwarer
И уж тем более - когда появляется ещё какой-то, несогласованный с ними отдельный цикл. Глюки...
Никаких глюков, всё работает предсказуемо и в соответствии с документацией. Окна закрываются - это немаловажно.
...
Рейтинг: 0 / 0
Модальный позор
    #40120239
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Другой цикл прекрасно может обработать сообщение нажатия кнопки, по которому произойдет закрытие и убиение с экрана и памяти модального окна.

А как он отработает возврат из ShowModal и продолжение той обработки, которая должна быть после ShowModal?
...
Рейтинг: 0 / 0
Модальный позор
    #40120240
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
YuRock
Другой цикл прекрасно может обработать сообщение нажатия кнопки, по которому произойдет закрытие и убиение с экрана и памяти модального окна.

А как он отработает возврат из ShowModal и продолжение той обработки, которая должна быть после ShowModal?
Никак, конечно. Выполнение кода вернется туда после того, как закончится доп. цикл. Но, главное, что окно с экрана уберется.
...
Рейтинг: 0 / 0
Модальный позор
    #40120243
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockНо, главное, что окно с экрана уберется.

Программист, написавший в своём коде Form2.ShowModal, вряд ли будет ожидать
такой подставы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120247
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
YuRockНо, главное, что окно с экрана уберется.

Программист, написавший в своём коде Form2.ShowModal, вряд ли будет ожидать
такой подставы.Еще худшая подстава - когда пользователь ткнул "О программе" какое-нибудь или еще что, любой диалог, и потом закрыть его не может, убрать с экрана и вернуться к управлению основным окном.
...
Рейтинг: 0 / 0
Модальный позор
    #40120249
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Никак, конечно. Выполнение кода вернется туда после того, как закончится доп. цикл. Но, главное, что окно с экрана уберется.

Я не могу придумать, что в таком подходе хорошего. Один сплошной глюкогенератор.

Давай представим себе простое приложение: из главного окна А открывается модальное Б. В модальном Б заполняется поле ввода, когда Б закрывается - введённый текст попадает в caption главного окна.

Чего ожидает пользователь? Он ввёл текст, нажал ОК, окно Б закрылось, текст отобразился в окне А, окно А доступно для дальнейших действий.

Что пользователь получает на самом деле? Он ввёл текст, нажал ОК, окно Б закрылось, текст в окне А не отобразился, окно А не доступно для дальнейших действий. Зато ещё неизвестно сколько работает некий "доп. цикл" и если повезёт, из него когда-нибудь удастся выйти.
...
Рейтинг: 0 / 0
Модальный позор
    #40120250
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, это-то решается простым убиением бага в коде, который мешает всему
вышеназванному...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120257
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Что пользователь получает на самом деле? Он ввёл текст, нажал ОК, окно Б закрылось, текст в окне А не отобразился, окно А не доступно для дальнейших действий. Зато ещё неизвестно сколько работает некий "доп. цикл" и если повезёт, из него когда-нибудь удастся выйти.
Всё не так.
1. Текст в окне А отобразится, если сменить текст по событию по нажатии кнопки модального окна, а не после ShowModal.
2. Окно A как раз становится доступным.
3. И не важно, сколько еще будет работать доп. цикл.
...
Рейтинг: 0 / 0
Модальный позор
    #40120262
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockТекст в окне А отобразится, если сменить текст по событию по нажатии кнопки
модального окна

Это плохой дизайн. Нарушает инкапсуляцию. Окно не должно ничего знать о том
откуда и для чего его вызывают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120289
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Всё не так.



YuRock
1. Текст в окне А отобразится, если сменить текст по событию по нажатии кнопки модального окна, а не после ShowModal.

То есть ты практически отказываешься от того, что чуть раньше назвал нормальным - желания писать if ShowModal then {что-нибудь}. Теперь это "что-нибудь" нужно писать в нажатии кнопки.

Давай теперь предположим, что окно Б - это стандартная функция InputQuery. Как ты предлагаешь обработчику её кнопки узнавать, чей текст менять?

YuRock
2. Окно A как раз становится доступным.

Ну разве что если это тоже делать в обработчике кнопки.

YuRock
3. И не важно, сколько еще будет работать доп. цикл.

А главное - зачем и нахрена он вообще нужен. Ради кривой фигни ты так постепенно всё приложение перекособочишь.
...
Рейтинг: 0 / 0
25 сообщений из 124, страница 2 из 5
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Модальный позор
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]