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

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

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

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

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


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

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

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

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

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

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

вместо того, чтобы возбуждаться на нежелание утирать сопли, и проблема бы ушла сама собой
...
Рейтинг: 0 / 0
14.12.2021, 23:04
    #40120086
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модальный позор
s62
Все нормально работало.
У меня на Rio воспроизвелось
...
Рейтинг: 0 / 0
14.12.2021, 23:09
    #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
14.12.2021, 23:09
    #40120089
Mikhail Tchervonenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модальный позор
Я бы сказал что это не столько делфи баг сколько операционной системы, прокладки итп. Особенно часто проявляется на том же Citrix. С таким же успехом наблюдал его у приложений написанных на том же C#. Хотя, возможно я неправ :)
...
Рейтинг: 0 / 0
14.12.2021, 23:11
    #40120090
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модальный позор
_Vasilisk_
s62
Все нормально работало.
У меня на Rio воспроизвелось

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

ну да, ты уже... :)
...
Рейтинг: 0 / 0
14.12.2021, 23:14
    #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
14.12.2021, 23:15
    #40120096
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модальный позор
ъъъъъ
Посмотри, пожалуйста, значение свойства
Код: pascal
1.
  Application.ModalPopupMode

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

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

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

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

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

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

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


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