-
Похожий контент
-
- 14 ответов
- 913 просмотра
-
- 1 ответ
- 510 просмотров
-
- 0 ответов
- 948 просмотров
-
- 6 ответов
- 2 852 просмотра
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
ramir
В модальном окне срабатывает Action по ShortCut- у другого окна
Наткнулся на неожиданную проблему.
В диалоговом окне по ShortCut срабатывает Action другой формы. Например, вызвал окно по ShowModal, случайно (или не очень) нажал Ctrl-O и на тебе - окно выбора файла из главного окна.
Изучение метода TCommonCustomForm.KeyDown привело к такому коду
... // 5. perform key in all ActionLists in Childrens TraverseChildren(self); // 6. perform key in all main menus and ActionLists in other forms OtherForms(True); OtherForms(False); ... procedure OtherForms(IsMain: boolean); var I, J: integer; F: TCommonCustomForm; begin if Done then Exit; for I := 0 to Screen.FormCount - 1 do if (Screen.Forms[I] <> self) and (Screen.Forms[I].Visible) and (IsMain xor (Screen.Forms[I] <> Application.MainForm)) then begin F := Screen.Forms[I]; for J := F.ChildrenCount - 1 downto 0 do begin if F.Children[J] is TMainMenu then TMainMenu(F.Children[J]).DialogKey(Key, Shift); if Key = 0 then begin Done := True; Exit; end; end; TraverseChildren(F); if Done then Exit; end; end;
т.е. если ShortCut в активном оокне не отработал ищется по всем другим формам.
Не знаю, для чего это нужно, но в модальном окне такое поведение вызывает мягко говоря недоумение.
Решить проблему напрямую простыми способами пока не получилось, пока пришлось дизайблить все ActionList-ы перед вызовом диалога.
Может всетаки есть какой то нормальный споcоб обойти проблему?
PS. В Berline похоже такаяже хрень.
Ссылка на комментарий
1 ответ на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.