Перейти к содержанию
Fire Monkey от А до Я
  • 0

В модальном окне срабатывает Action по ShurtCut- у другого окна


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 похоже такаяже хрень.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Спасибо за бдительность.
То, что горячие клавиши передаются во все формы это правильно. Для случая модальной формы действительно видимо этого делать не следует. Было бы очень хорошо, если бы вы написали отчет об ошибке в QC.
 

Изменено пользователем RoschinSpb
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...