|
Модальный позор
|
|||
---|---|---|---|
#18+
Dmitry Arefiev Какой именно баг ? Dmitry Arefiev Как именно выгребаешь ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 00:04 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
_Vasilisk_ При переводе очередного проекта на новые версии все ломается, а потом я вспоминаю об исправленном баге Ты сам пишешь, что понадобился день на исправление. Я думаю, это в высшей степени приемлемая цена за несохранение старых багов в новых версиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 00:15 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
_Vasilisk_ Dmitry Arefiev Какой именно баг ? Есть в трекере Эмбы ? Если только тут, то = нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 00:18 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
Dmitry Arefiev Есть в трекере Эмбы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 01:29 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
softwarer Ты сам пишешь, что понадобился день на исправление. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 01:32 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
_Vasilisk_, вы читать умеете? Перечитайте топик и уясните уже, что советов здесь никто не просил. Тем более у личностей, которым клеймо biohazard ставить негде. А позор из заголовка топика -- это когда использование совершенно штатных методов без малейших признаков шаманства приводит приложение в такое состояние, в котором оно просто не должно быть ни при каких раскладах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 01:56 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
virtual memberиспользование совершенно штатных методов без малейших признаков шаманства О чём ты говоришь? В Windows НЕТ штатных средств создания модального окна за исключением диалогового (что не для слабонервных). TForm.ShowModal это изначально кривоватый костыль, у которого приходится удивляться не глюкам, а тому, что оно хоть как-то работает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 02:17 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov В Windows НЕТ штатных средств создания модального окна за исключением диалогового (что не для слабонервных) Почему в VCL было не реализовать модальность через DialogBoxIndirectParam (или как там оно) - тайна. Оконная функция "не такая"? Элементарно обходится, зато глюков нет, включая глюки из-за доп. цикла выкрутки сообщений, при появлении которого (в сторонней dll, например) дельфовые модальные окна вообще закрываться перестают, т.к. "туда не доходит". Я VCL-окна не использую давно из-за этого (только в одной уже старой программе и для тестов), т.к. для меня это непобедимая проблема - цикл с проверкой на переменную ModalResult, который теряет управление. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 03:50 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRock Почему в VCL было не реализовать модальность через DialogBoxIndirectParam (или как там оно) - тайна. Думаю, в этом случае "глюки дельфовой модальности" вспоминались бы с детской нежностью. YuRock включая глюки из-за доп. цикла выкрутки сообщений Первопричиной этих "глюков" я бы назвал существование синхронного ModalResult (то есть желание писать код в стиле if ShowModal = mrOk then). Этот аспект перпендикулярен внутренней реализации ShowModal - хоть так как есть, хоть через DialogBoxIndirectParam, хоть как угодно ещё. YuRock при появлении которого (в сторонней dll, например) И это точно глюк именно Delphi? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 08:41 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
softwarer то есть желание писать код в стиле if ShowModal = mrOk then). Этот аспект перпендикулярен внутренней реализации ShowModal softwarer YuRockпри появлении которого (в сторонней dll, например) И это точно глюк именно Delphi?Да, точно, модальное окно должно закрываться вне зависимости от того, какой цикл сейчас работает, а в Delphi это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 13:47 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRockЧто там "не для слабонервных"? Почему в VCL было не реализовать модальность через DialogBoxIndirectParam (или как там оно) - тайна. Масштабы, например. Хотя, если посмотреть на текущее состояние дел, может, именно это могло быть самым большим плюсом. Ну и скудный выбор доступных контролов. Попугашистости не хватает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 13:56 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ну и скудный выбор доступных контролов. Тут вопрос скорей возникнет - а как же Synchronize обрабатывать? Это да, беда. Хотя раньше такой беды не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:12 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRockВсе делфовые контролы прекрасно бы лягли на такой диалог. Что надо запихать в шаблон для TDBGrid, например? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:19 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRock Да, точно, модальное окно должно закрываться вне зависимости от того, какой цикл сейчас работает, а в Delphi это не так. Я не понимаю, как ты это себе технически представляешь. Допустим, речь идёт об одном потоке. В нём есть модальное окно. Это означает, что есть цикл обработки сообщений, в нём обрабатывалось какое-то сообщение, и эта обработка вызвала модальное окно. Сейчас она ждёт возврата из ShowModal, чтобы продолжиться. Теперь откуда-то есть ещё один цикл. Он "сейчас работает" и сообщение в нём должно закрыть модальное окно. "Сейчас работает" означает, что он по стеку вызовов ниже ShowModal, а "должен закрыть" - то, что должен произойти возврат из ShowModal в код выше по стеку. По-моему, такое возможно только если по этому сообщению первым делом закроется сам "ещё один цикл" вместе с кодом, в котором он работает. Я бы сказал - кривизна в самой идее наличия в одном потоке нескольких циклов обработки сообщений. Даже в том варианте, в котором она в дельфе. И уж тем более - когда появляется ещё какой-то, несогласованный с ними отдельный цикл. Глюки... неудивительны, говоря деликатно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:21 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov YuRockВсе делфовые контролы прекрасно бы лягли на такой диалог. Что надо запихать в шаблон для TDBGrid, например?Ничего. Создать окно грида динамически с парентом-хендлом диалога. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:26 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
softwarer По-моему, такое возможно только если по этому сообщению первым делом закроется сам "ещё один цикл" вместе с кодом, в котором он работает. softwarer Я бы сказал - кривизна в самой идее наличия в одном потоке нескольких циклов обработки сообщений. softwarer Даже в том варианте, в котором она в дельфе softwarer И уж тем более - когда появляется ещё какой-то, несогласованный с ними отдельный цикл. Глюки... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:32 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRock Другой цикл прекрасно может обработать сообщение нажатия кнопки, по которому произойдет закрытие и убиение с экрана и памяти модального окна. А как он отработает возврат из ShowModal и продолжение той обработки, которая должна быть после ShowModal? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:36 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
softwarer YuRock Другой цикл прекрасно может обработать сообщение нажатия кнопки, по которому произойдет закрытие и убиение с экрана и памяти модального окна. А как он отработает возврат из ShowModal и продолжение той обработки, которая должна быть после ShowModal? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:41 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRockНо, главное, что окно с экрана уберется. Программист, написавший в своём коде Form2.ShowModal, вряд ли будет ожидать такой подставы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:54 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov YuRockНо, главное, что окно с экрана уберется. Программист, написавший в своём коде Form2.ShowModal, вряд ли будет ожидать такой подставы.Еще худшая подстава - когда пользователь ткнул "О программе" какое-нибудь или еще что, любой диалог, и потом закрыть его не может, убрать с экрана и вернуться к управлению основным окном. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:03 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRock Никак, конечно. Выполнение кода вернется туда после того, как закончится доп. цикл. Но, главное, что окно с экрана уберется. Я не могу придумать, что в таком подходе хорошего. Один сплошной глюкогенератор. Давай представим себе простое приложение: из главного окна А открывается модальное Б. В модальном Б заполняется поле ввода, когда Б закрывается - введённый текст попадает в caption главного окна. Чего ожидает пользователь? Он ввёл текст, нажал ОК, окно Б закрылось, текст отобразился в окне А, окно А доступно для дальнейших действий. Что пользователь получает на самом деле? Он ввёл текст, нажал ОК, окно Б закрылось, текст в окне А не отобразился, окно А не доступно для дальнейших действий. Зато ещё неизвестно сколько работает некий "доп. цикл" и если повезёт, из него когда-нибудь удастся выйти. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:04 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
Ну, это-то решается простым убиением бага в коде, который мешает всему вышеназванному... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:04 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
softwarer Что пользователь получает на самом деле? Он ввёл текст, нажал ОК, окно Б закрылось, текст в окне А не отобразился, окно А не доступно для дальнейших действий. Зато ещё неизвестно сколько работает некий "доп. цикл" и если повезёт, из него когда-нибудь удастся выйти. 1. Текст в окне А отобразится, если сменить текст по событию по нажатии кнопки модального окна, а не после ShowModal. 2. Окно A как раз становится доступным. 3. И не важно, сколько еще будет работать доп. цикл. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:16 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRockТекст в окне А отобразится, если сменить текст по событию по нажатии кнопки модального окна Это плохой дизайн. Нарушает инкапсуляцию. Окно не должно ничего знать о том откуда и для чего его вызывают. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:29 |
|
Модальный позор
|
|||
---|---|---|---|
#18+
YuRock Всё не так. YuRock 1. Текст в окне А отобразится, если сменить текст по событию по нажатии кнопки модального окна, а не после ShowModal. То есть ты практически отказываешься от того, что чуть раньше назвал нормальным - желания писать if ShowModal then {что-нибудь}. Теперь это "что-нибудь" нужно писать в нажатии кнопки. Давай теперь предположим, что окно Б - это стандартная функция InputQuery. Как ты предлагаешь обработчику её кнопки узнавать, чей текст менять? YuRock 2. Окно A как раз становится доступным. Ну разве что если это тоже делать в обработчике кнопки. YuRock 3. И не важно, сколько еще будет работать доп. цикл. А главное - зачем и нахрена он вообще нужен. Ради кривой фигни ты так постепенно всё приложение перекособочишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 16:02 |
|
|
start [/forum/topic.php?fid=58&msg=40120247&tid=2036750]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 317ms |
total: | 461ms |
0 / 0 |