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;
Вы можете найти быстрый демонстрационный проект здесь .