如何从另一个程序内部调用过程

时间:2014-02-19 18:09:07

标签: freepascal procedures

有这个链接How do I Invoke a procedure when inside another procedure in Pascal但不完全是我的情况。

procedure TForm1.Button1Click(Sender: TObject);
var
   [...]
begin
  // click on button
  [...]
end; 

我有这个程序

procedure TForm1.CheckListBox2DblClick(Sender: TObject);
begin
  // on double click in flags
  [the same code like above]
end; 

我试过这个,但它不起作用

procedure TForm1.CheckListBox2DblClick(Sender: TObject);
begin
  TForm1.Button1Click;
end;    

然后我尝试了这个

procedure TForm1.CheckListBox2DblClick(Sender: TObject);
begin
  TForm1.Button1Click(Sender: TObject);
end; 

它也不起作用 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:3)

只需使用nil或其他组件作为Sender直接调用它:

procedure TForm1.CheckListBox2DblClick(Sender: TObject);
begin
  Button1Click(nil);
end;  

procedure TForm1.CheckListBox2DblClick(Sender: TObject);
begin
  Button1Click(CheckListBox2);
end;      

请注意,您不使用表单本身的类名(或变量名),因为您是从表单的当前实例调用的。 IOW,在类方法中使用TForm1Form1;这限制了您对表单的特定实例,而不是所有实例都可用。如果您需要对其进行限定,请使用Self,如Self.Button1Click(nil);

答案 1 :(得分:0)

试试这个

procedure TForm1.CheckListBox2DblClick(Sender: TObject);
begin
TForm1.Button1Click(Sender);
end;