Delphi:如何在同一窗体的某个控件事件中调用另一个控件的事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi:如何在同一窗体的某个控件事件中调用另一个控件的事件?相关的知识,希望对你有一定的参考价值。

比如:窗体上有两个面板,如何在面板2的onmousedown事件中调用面板1的onmousedown事件呢?我这样写报错。该如何改呢?
procedure TMainForm.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
tag:=panel2.Tag;
Panel1MouseDown(Sender);//这一句报错的
end;
procedure TMainForm.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//
end;

参考技术A 先捕获好第一个要捕获的控件的事件,再在DELPHI中的Object Inspector窗口的Events选页中,在那有对像的所有事件,你可以在想要的事件中有个下拉框的,把它指向那个捕获好的控件的相同事件就可以了,在所有事件里有个Sender: TObject的属性的,用它可以区分当前激活事件的是那个控件。如 if Sender = edit1 then beep; 参考技术B

同上

要是两个完全一模一样的代码话, 

直接在定义的时候就可以修改

参考技术C Panel1MouseDown(sender,button,shift,x,y);本回答被提问者采纳

Vba中窗体部件点击事件?

窗体多有多个label,请问怎样通过部件的click事件获取当前部件的名称

嗯,答案是5
首先i=1
执行第一条语句
a=1+1=2
然后跳出继续i=2,执行第二条语句
a=2(上面那个a的值)+2=4
跳出继续i=3执行第一条语句
a=4+1=5
msgbox=a
也就是=5了
参考技术A

在窗体上有多个Label控件,可以通过为每个Label控件添加一个相同的Click事件处理程序,并在事件处理程序中获取当前部件的名称。

具体来说,可以按照以下步骤进行操作:

    选中窗体中的某个Label控件,在属性窗口中找到“事件”选项卡,双击或单击“Click”事件打开代码编辑器;

    在代码编辑器中输入以下代码,以在单击该Label时输出其名称:

    csharpCopy codeprivate void Label_Click(object sender, EventArgs e)
       Label clickedLabel = sender as Label;    if (clickedLabel != null)
       
           MessageBox.Show(clickedLabel.Name);
       

    复制以上代码,并将其粘贴到其他Label控件的Click事件处理程序中,以便在单击任何一个Label时都能够输出其名称。

    在这份代码中,sender参数代表了触发了事件的控件对象,因此我们可以将其转换为Label类型,并通过Name属性获得其名称,并在消息框中显示出来。

追问

请问excel的vba中怎样实现呢

以上是关于Delphi:如何在同一窗体的某个控件事件中调用另一个控件的事件?的主要内容,如果未能解决你的问题,请参考以下文章

C#winform 主窗体上的用户控件怎样调用主窗体的一个方法!

C#中如何在一个窗体中调用另一个窗体控件中的数据?

Delphi 窗体中怎样嵌入网页

Delphi中从一个窗体传参数到另一个窗体的办法都有哪些?

C#中如何在一个窗体中调用另一个窗体控件中的数据?

C#中两个窗体间的函数调用