Jean Alysson
Jean Alysson

Reputation: 1

TTouchKeyboard: send keystroke to same program?

I saw your tip about : TTouchKeyboard: send keystroke to other program

How can I send the keys to the other form in the same Delphi application?

And how can I call the form with the TTouchKeyboard? (Show, showModal, parameters?)

Thanks!

Upvotes: 0

Views: 1509

Answers (1)

Whiler
Whiler

Reputation: 8086

ShowModal is a bad idea... you focus the caller...

You can still use the same tip with the form which contains the keyboard, in order to stay disable...

Then, you can add a property with the handle of the form which should get the keystroke.

And finally, you hack the TTouchKeyboard to set the focus to the form with the handle you previously set...

For instance, your TTouchKeyboard hack could be like this:

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;

You can find a quick demo project here.

Upvotes: 1

Related Questions