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

Как задать фокус форме


Winexcel

Вопрос

Здравствуйте! Имею следующую проблему:
Поверх основной формы выравнивается прозрачная форма на которой лежит TTreeView, у TTreeViewItem есть стиль который предусматривает кнопку по нажатию на которую из дерева будет удалятся лист,

ScreenShot.png.ca04283f8f3249f5aa4fbfe5947de660.png

 

если я нажимаю на кнопку закрыть(крестик что справа, сама кнопка в стиле представлена обычным TButton), то удаляется текущий айтем и все что в него вложены, код кнопки удаления:

procedure ButtonCloseClick(Sender: TObject);
var
  ItemSelected:TTreeViewItem;
begin
  if TreeView1.Selected<>nil then
  begin
    if TreeView1.Selected.ParentItem<>nil then begin
      ItemSelected:=TreeView1.Selected;
      TreeView1.Selected.ParentItem.RemoveObject(ItemSelected);
      ItemSelected.DisposeOf;
    end else
    begin
      ItemSelected:=TreeView1.Selected;
      TreeView1.RemoveObject(ItemSelected);
      ItemSelected.DisposeOf;
    end;
  end;
end;

 

После того как я нажимаю на кнопку удаления один или более раз, я не могу получить доступ к основной форме над которой висит прозрачная форма, всё это очень похоже на DeadLock, но это не DeadLock, потому что если я кликну в любое другое место за пределами формы, например открою "Проводник", а затем кликну на основную форму, то та получает фокус и всё снова работает. Сделал небольшой костыль который иногда срабатывает, он имитирует клик по форме, что даёт ей фокус, но не всегда работает:

procedure ClickOnControl(HWND:THandle; xPos,yPos:word);
begin
 PostMessage(HWND,WM_LBUTTONDOWN,0,(yPos shl 16)+xPos);
 PostMessage(HWND,WM_LBUTTONUP,0,(yPos shl 16)+xPos);
end;

 

Из прозрачной формы посылаю клик когда она закрывается:

  ClickOnControl(FMXHandleToHWND(FormMain.Handle), Round(Point.X+10), Round(Point.Y+10));

Пробовал вызывать FormMain.Activate, не помогло.

Посоветуйте пожалуйста как вернуть фокус форме при таких обстоятельствах.

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

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

Ответов пока нет

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...