gpt4 book ai didi

delphi - 将 Tobject 传递给另一种形式?

转载 作者:行者123 更新时间:2023-12-02 02:26:44 25 4
gpt4 key购买 nike

我正在 Delphi XE2 中编写一个支持触摸屏的应用程序。

我有一个带有 TEdits 的表单。当我单击它们时,我调用我编写的过程来显示另一个最大化的始终位于顶部的窗体,其中带有带有标签(用于标题)的 TTouchkeyboard 和用于键盘输入。

我的程序(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 !

最佳答案

欢迎您将任何您想要的参数传递给您想要的任何函数。如果您需要在另一个函数中使用传递的值,则需要将其保存在某个位置,以便后面的函数仍然可以访问它。

使用您的示例,您似乎为 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 控件,因此您可以更改 showkeyboard 中的 Sender 参数的类型以反射(reflect)特定的类型:

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

关于delphi - 将 Tobject 传递给另一种形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12065429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com