TTouchKeyboard: отправить нажатие клавиши в ту же программу? - PullRequest
0 голосов
/ 07 октября 2011

Я видел ваш отзыв о: TTouchKeyboard: отправить нажатие клавиши в другую программу

Как я могу отправить ключи на другую форму в том же приложении Delphi?

А как я могу вызвать форму с TTouchKeyboard? (Show, showModal, параметры?)

Спасибо!

1 Ответ

1 голос
/ 08 октября 2011

ShowModal - плохая идея ... вы фокусируете абонента ...

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

Затем вы можете добавить свойство с дескриптором формы, которое должно получить нажатие клавиши.

И, наконец, вы взломали TTouchKeyboard, чтобы установить фокус на форму с ручкой, которую вы ранее установили ...

Например, ваш TTouchKeyboard хак может выглядеть так:

type
  TMyKeyboard = class(TTouchKeyboard)
  protected
    procedure WndProc(var Message: TMessage); override;
  end;
type
  TForm1 = class(TForm)

...

  private
    fHandleOfTheTargetForm: HWND;
  public
    property HandleOfTheTargetForm: HWND read fHandleOfTheTargetForm write fHandleOfTheTargetForm;

...

procedure TMyKeyboard.WndProc(var Message: TMessage);
begin
  if (Assigned(Form1)) then
  begin
    if Form1.HandleOfTheTargetForm <> 0 then
    begin
      SetForegroundWindow(HandleOfTheTargetForm);
    end;
  end;
  inherited;
end;

Вы можете найти быстрый демонстрационный проект здесь .

...