2012-08-22 179 views
1

我正在Delphi XE2中編寫一個啓用觸摸屏的應用程序。將Tobject傳遞給另一個表單?

我有一個表格TEdits。當我點擊它們時,我打電話給我編寫的程序,以便在頂部表單上顯示另一個最大化,帶有標籤(用於標題)的TTouchkeyboard和用於鍵盤輸入的TEdit

我的程序(vkeyboard是我的表單名稱與TTouchkeyboard):

procedure TLogin.showkeyboard(numeric,password: Boolean; 
    caption,value:string;Sender:TObject); 
begin 
    if numeric then 
    vkeyboard.TouchKeyboard1.Layout := 'NumPad' // make the TTouchkeyboard on the form numeric or alpha 
    else 
    vkeyboard.TouchKeyboard1.Layout := 'Standard'; 
    if password then 
    vkeyboard.input.PasswordChar := '*' //make the TEdit show * or normal characters 
    else 
    vkeyboard.input.PasswordChar := #0; 
    vkeyboard.title.Caption := caption; 
    vkeyboard.input.Text := value; 
    vkeyboard.Show; 
end; 

我想送Form1.Edit1對象的形式vkeyboard,但我不知道如何正確地做到這一點!

爲什麼?因爲我希望能夠在輸入表單上單擊完成(vkeyboard),然後追溯誰是發件人,然後更新主窗體編輯中的文本!

procedure Tvkeyboard.sButton1Click(Sender: TObject); 
begin 
    (temp as TEdit).Text := input.Text; // send back the text to the right object 
    vkeyboard.Hide; 
end; 

這一小部分當然沒有工作......我想我需要指定臨時對象屬於X形式?

爲了清楚起見,我想追溯誰叫程序或至少能夠在程序中指定它,然後返回文本(從第二個窗體到主窗體)到右側TEdit

回答

4

歡迎您隨意傳遞您想要的任何參數。如果您需要在另一個函數中使用傳遞的值,則需要將其保存在某個位置,以便後面的函數仍可以訪問它。

使用您的示例,您似乎爲您的showkeyboard函數提供了Sender參數。我假設你正在傳遞一個對觸發鍵盤顯示的TEdit控件的引用。存儲在vkeyboard中的Tvkeyboard對象需要稍後使用該值,因此請將該值的副本提供給Tvkeyboard對象。聲明TEdit場:

type 
    Tvkeyboard = class(...) 
    ... 
    public 
    EditSender: TEdit; 

然後,在showkeyboard,設置現場:

vkeyboard.EditSender := Sender; 

最後,當你設置文本使用該字段:

procedure Tvkeyboard.sButton1Click(Sender: TObject); 
begin 
    EditSender.Text := input.Text; // send back the text to the right object 
    Self.Hide; 
end; 

既然你知道它將始終爲TEdit控件,您可以更改showkeyboardSender參數的類型以反映該特定類型:

procedure TLogin.showkeyboard(..., Sender: TEdit);