edit.text获取被点击的按钮控件名称

小黑学DELPHI 2022-07-02 16:00:20

 比如说,鼠标点到edit1里面,然后,点击button1时,edit1.text能获取到button1的名称。

然后鼠标移动到edit2里面。点击button2时,edit2,text能获取到button2的名称。这样的程序咋整。一脑袋浆糊

 

...全文
149 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复

tanqth的回复是正解

  • 打赏
  • 举报
回复
tanqth 07-04

img


三个按钮共用一个点击事件;

img


两个EDIT共用一个事件。

  • 打赏
  • 举报
回复 1
tanqth 07-04

img


执行效果如上图,代码如下。主要就只有两行。


unit Unit8;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm8 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Edit1Enter(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    editx:TEdit; //一个记录获得焦点的变量
  public
    { Public declarations }
  end;

var
  Form8: TForm8;

implementation

{$R *.dfm}

procedure TForm8.Button1Click(Sender: TObject);
begin
  editx.Text:= TButton(Sender).Caption; //当点击某个按钮时,给最近为焦点的EDIT赋值为当前按钮的名字
end;

procedure TForm8.Edit1Enter(Sender: TObject);
begin
  editx:=TEdit(Sender); //当进入某个Edit时,赋值为当前EDIT
end;

procedure TForm8.FormCreate(Sender: TObject);
begin
  editx:=nil;   //创建是赋值为空,其实也可以不要
end;

end.

  • 打赏
  • 举报
回复 1
@tanqth 感谢大佬,辛苦 辛苦
  • 举报
回复
@小黑6688as 大佬,那要是这三个按钮是三个功能按钮,比如开始结束重复三个功能的,那在button上都用相同的onclick。不太ok。是不是的把editx.Text:= TButton(Sender).Caption;写在每一个onclick比较好
  • 举报
回复
展开其他2条回复

可以:

  1. 所有Edit共享一个OnExit事件处理,用一个变量记录失去焦点的Sender
  2. 所有Button共享一个OnEnter事件处理,在其中设置前述变量的Text即可
    当然还需要做一些安全判断~
  • 打赏
  • 举报
回复
ooolinux 07-02

Edit的OnEnter事件里记录一下是哪个Edit

  • 打赏
  • 举报
回复
@ooolinux on enter里面不能写成固定的啊。要是还有button789呢。。。
  • 举报
回复
tanqth 07-02

你这说明。我只能说,当你点了button1时,直接给edit1.text:='button1';
当你点了button2时,直接给edit2.text:='button2';

我不知道你那个什么“鼠标点到edit1里面,然后”那是什么意思。

  • 打赏
  • 举报
回复
tanqth 07-02
@tanqth 你的问题,不怎么好回答
  • 举报
回复
@tanqth 就是edit1.text获得输入状态以后,点击哪个控件,edit1的text就显示这个控件的名称。 edit1没有获得输入焦点的时候,不会获得任何信息。
  • 举报
回复

什么意思?如果焦点在edit1,然后你点了button3,你希望发生什么?

  • 打赏
  • 举报
回复
@日立奔腾浪潮微软松下联想 edit1。text显示为button3.就是edit1,text显示被点击的控件名称
  • 举报
回复
@日立奔腾浪潮微软松下联想 在edit没有获得输入的焦点的时候,不会获取控件名称
  • 举报
回复
发帖
Delphi

5124

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2022-07-02 16:00
社区公告
暂无公告