2011-10-07 77 views

回答

1

的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; 

您可以找到一個快速演示項目here

+0

嗨,我嘗試了上面的提示,但不工作。我可以通過郵件向您發送一個小項目,或者您向我發送一個正在運行的項目嗎?我的電子郵件[email protected],非常感謝! –

+0

@JeanAlysson:我在回答結尾處添加了一個鏈接,並附有演示項目。 – Whiler

+0

好的,謝謝你的幫助,但是有沒有如何通過點擊按鈕來調用KeyboardForm,檢索內容並設置在目標窗體中並在需要時關閉它? –