我正在使用Delphi XE2编写支持触摸屏的应用程序。
我有一张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形式?
要清楚,我想追溯调用过程的人或者至少能够在过程中指定它,然后将文本(从第2个表单返回到主要表单)返回到右侧{{1} }!
答案 0 :(得分:4)
欢迎您将所需的任何参数传递给您想要的任何功能。如果你需要在另一个函数中使用传递的值,你需要将它保存在某处,以便后面的函数仍然可以访问它。
使用您的示例,您似乎为Sender
功能提供了showkeyboard
参数。我假设您正在传递对触发键盘显示的TEdit
控件的引用。存储在Tvkeyboard
中的vkeyboard
对象稍后需要使用该值,因此请将该值的副本提供给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
控件,因此您可以更改Sender
中showkeyboard
参数的类型以反映该特定类型:
procedure TLogin.showkeyboard(..., Sender: TEdit);