powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Модальный позор
25 сообщений из 124, страница 1 из 5
Модальный позор
    #40120034
virtual member
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри за тон, но это реально позор.

Еще лет 20 назад, во времена Delphi 5 периодически натыкался на проблему модальных окон в делфовых приложениях. Когда при открытии/закрытии друг из друга нескольких модальных окон, одно из них улетало под неактивное главное окно приложения. Спасало только двойное Alt+TAB.

Думал, что это осталось там, в начале нулевых. И что я увидел в Delphi 11, когда открыл простой файловый диалог из простого модального окна? Почти то же самое. При закрытии файлового диалога фокус уходит на главную форму, а модальная становится не активной. Спасибо, что хотя бы не под главной, как раньше.

Помнится, в те давние времена модальные окна у делфового софта вообще вели себя не так, как у остальных программ. Точно не помню, но то-ли они не мигали заголовком, когда пытаешься фокус отнять, то-ли как-то еще, но точно "нестандартно". Сегодня никакой разницы в поведении уже не видно, но похоже что модальность так и осталась самопальной, ее только немного подровняли.
...
Рейтинг: 0 / 0
Модальный позор
    #40120037
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рыдалъ.
...
Рейтинг: 0 / 0
Модальный позор
    #40120040
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну подумаешь, не смог человек найти новые оверлоады с явным указанием
родительского окна... Это же тяжко, многа букафф читать...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120041
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virtual memberв Delphi 11, когда открыл простой файловый диалог из простого модального окна? При закрытии файлового диалога фокус уходит на главную форму, а модальная становится не активной.

Есть воспроизводимый пример?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120044
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
virtual memberв Delphi 11, когда открыл простой файловый диалог из простого модального окна? При закрытии файлового диалога фокус уходит на главную форму, а модальная становится не активной.


Есть воспроизводимый пример?

Насколько я помню, для этого вполне достаточно криво поставить PopupMode.
...
Рейтинг: 0 / 0
Модальный позор
    #40120056
virtual member
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам, конечно.

Даже имена форм и модулей не трогал, предельно минималистичный пример. Компилирую в D11, запускаю под Win10.
...
Рейтинг: 0 / 0
Модальный позор
    #40120064
virtual member
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Это же тяжко, многа букафф читать...

Харош фигню пороть с умным видом. В системной либе очевидная неконсистентность, а вы тут в тупом сарказме соревнуетесь.
...
Рейтинг: 0 / 0
Модальный позор
    #40120068
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer> Насколько я помню, для этого вполне
softwarer> достаточно криво поставить PopupMode.

Не, я не про PopupPArent/PopupMode, а про сценарий.
Т.е. IIRC кривости были со сменой фокуса и прочими
Alt+Tab-ами, а не просто рядовое "открыл диалоговое
окно из модального". Поэтому и есть подозрение, что
человек лохматит бабушку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Модальный позор
    #40120078
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачал тестовый пример, не смог воспроизвести ошибку. По клику на кнопке на форме1 модально открывается форма2, по клику на кнопке на ней открывается диалог открытия файла, когда он закрывается, неважно, по ОК или Отмена, 2 форма остается наверху, 1-ая, понятно, недоступна. В разных вариациях пробовал, даже открывая или выводя на 1 план другие программы, пока 2-ая форма открыта или файловый диалог из неё открыт. Все нормально работало.
...
Рейтинг: 0 / 0
Модальный позор
    #40120084
Mik86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тоже старый баг с модальностью окон.
...
Рейтинг: 0 / 0
Модальный позор
    #40120085
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virtual member
Харош фигню пороть с умным видом.
Вы даже умный вид сделать не в состоянии. Достаточно было прочитать
Dimitry Sibiryakov
Ну подумаешь, не смог человек найти новые оверлоады с явным указанием родительского окна...
И сделать как рекомендуют
Код: pascal
1.
2.
3.
4.
procedure TForm2.Button1Click(Sender: TObject);
begin
  OpenDialog1.Execute(Handle);
end;

вместо того, чтобы возбуждаться на нежелание утирать сопли, и проблема бы ушла сама собой
...
Рейтинг: 0 / 0
Модальный позор
    #40120086
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
Все нормально работало.
У меня на Rio воспроизвелось
...
Рейтинг: 0 / 0
Модальный позор
    #40120088
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function TCommonDialog.Execute: Boolean;
var
  ParentWnd: HWND;
begin
  if Application.ModalPopupMode <> pmNone then
  begin
    ParentWnd := Application.ActiveFormHandle;
    if ParentWnd = 0 then
      ParentWnd := ApplicationMainHandle;
  end
  else
    ParentWnd := ApplicationMainHandle;
  Result := Execute(ParentWnd);
end;

function ApplicationMainHandle: HWND;
begin
  if Application.MainFormOnTaskBar and (Application.MainForm <> nil) then
    Result := Application.MainFormHandle
  else
    Result := Application.Handle;
end;
...
Рейтинг: 0 / 0
Модальный позор
    #40120089
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сказал что это не столько делфи баг сколько операционной системы, прокладки итп. Особенно часто проявляется на том же Citrix. С таким же успехом наблюдал его у приложений написанных на том же C#. Хотя, возможно я неправ :)
...
Рейтинг: 0 / 0
Модальный позор
    #40120090
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
s62
Все нормально работало.
У меня на Rio воспроизвелось

Посмотри, пожалуйста, значение свойства
Код: pascal
1.
  Application.ModalPopupMode
...
Рейтинг: 0 / 0
Модальный позор
    #40120092
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

ну да, ты уже... :)
...
Рейтинг: 0 / 0
Модальный позор
    #40120095
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Потому что
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function TCommonDialog.Execute: Boolean;
var
  ParentWnd: HWND;
begin
  if Application.ModalPopupMode <> pmNone then
  begin
    ParentWnd := Application.ActiveFormHandle;
    if ParentWnd = 0 then
      ParentWnd := ApplicationMainHandle;
  end
  else
    ParentWnd := ApplicationMainHandle;
  Result := Execute(ParentWnd);
end;

function ApplicationMainHandle: HWND;
begin
  if Application.MainFormOnTaskBar and (Application.MainForm <> nil) then
    Result := Application.MainFormHandle
  else
    Result := Application.Handle;
end;


...и в конструкторе TApplication
Код: pascal
1.
  FModalPopupMode := pmNone;
...
Рейтинг: 0 / 0
Модальный позор
    #40120096
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Посмотри, пожалуйста, значение свойства
Код: pascal
1.
  Application.ModalPopupMode

По дефолту там pmNone и никто его не меняет.
...
Рейтинг: 0 / 0
Модальный позор
    #40120097
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoЯ бы сказал что это не столько делфи баг сколько операционной системы, прокладки
итп.

Конкретно это - баг VCL, причём архитектурный. Они с самого начала (первой
версии) начали делать визуальную часть немного криво. Потом подпёрли костылями.
Потом ещё. И ещё. В результате вот такие топики.

PS: А C# тупо VCL скопировала вместо со всеми багами.
...
Рейтинг: 0 / 0
Модальный позор
    #40120099
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Потом подпёрли костылями. Потом ещё. И ещё. В результате вот такие топики.

Здесь главная кривизна в том, что они "для совместимости" оставили по дефолту pmNone (если мне память не изменяет).
...
Рейтинг: 0 / 0
Модальный позор
    #40120102
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer,

так и есть. Интересно, но ведь что-то помешало изменить, и это, надо полагать, не ситуация с глючным переключением фокуса.
...
Рейтинг: 0 / 0
Модальный позор
    #40120107
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Интересно, но ведь что-то помешало изменить

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

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


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