gpt4 book ai didi

delphi - 自定义小键盘并将特定数字发送到事件文本框

转载 作者:行者123 更新时间:2023-12-03 18:33:52 27 4
gpt4 key购买 nike

我制作了一个带有数字的自定义小键盘。它是一个框架和其中的按钮。我把这个组件放到了表单上。现在我不知道如何捕获表单上的事件控件,然后将特定于按钮的数字发送到该控件。

有人能帮助我吗?

最佳答案

IMO 最简单的方法是还将作为按钮标题的数字存储在按钮的 Tag 属性中。然后,您可以对所有按钮使用相同的事件处理程序:

procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := TButton(Sender).Tag;
end;

另一种选择是读取事件中的标题,但是您必须进行从字符串到整数的转换,如果您不小心将没有数字标题的按钮分配给事件处理程序,则会中断:
procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := StrToInt(TButton(Sender).Caption);
end;

请注意,这样您就不必关心您的组件是否为 ActiveControl;您只需将事件处理程序分配给组件的每个按钮,而没有其他任何内容,然后如果触发了该事件,您就知道事件控件是您的组件以及单击了其中的哪个按钮。

编辑:根据下面的评论,这个问题比看起来要多一些。

如果您尝试将号码发送到 TEdit(您的“文本框”),您必须做一些其他的事情。首先,不要使用 TButton 或 TBitBtns,因为它们会获得焦点并将焦点从您的编辑控件上移开。请改用 TSpeedButton。将您想要的每个标题的标题设置为您希望它放在 TEdit 中的数字。

其次,既然你想把内容放在 TEdit 中,你就不需要理会标签。将所有 TSpeedButtons 的事件处理程序设置为这个(假设您的 TEdit 是 Edit1):
procedure TForm1.NumButtonClick(Sender: TObject);
begin
Edit1.SelText := TSpeedButton(Sender).Caption;
end;

这会将 TEdit Edit1 中的任何选定文本替换为 SpeedButton 的标题,或者将其添加到 TEdit 中的当前插入符号(编辑光标)位置。

如果你想把它放在许多 TEdits 中的任何一个中,稍微改变一下也可以处理:
procedure TForm1.NumButtonClick(Sender: TObject);
begin
if ActiveControl is TEdit then
TEdit(ActiveControl).SelText := TSpeedButton(Sender).Caption;
end;

如果这仍然不是您要完成的任务,请编辑您的原始问题并为其添加更多信息,以便我们有机会帮助您获得答案。

关于delphi - 自定义小键盘并将特定数字发送到事件文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816985/

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