我已经下载了Delphi XE7并且在访问其他设备时遇到了一些问题...... 我需要调用其他单位的程序,所以我将给出一个非常基本的例子,简单的程序...... 这是来自主Unit1的代码,其中包含form和button1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hello');
end;
end.
这是Unit2的代码:
unit Unit2;
interface
implementation
uses Unit1;
end.
现在,如何在单元2中使用Button1Click来显示消息,当单击form1上的button1时,我们怎么说HelloFromUnit2? Unit2是没有任何东西的codeUnit ..
答案 0 :(得分:2)
使用build in过程调用Click处理程序
将表格1保留原样:
unit Unit2;
interface
implementation
uses
Unit1;
procedure Click;
begin
if Assigned(Form1) then
Form1.Button1.Click;
end;
端。
答案 1 :(得分:1)
将过程声明添加到TForm1的公共部分,如下所示
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
Procedure SayHello;
end;
...
procedure TForm1.SayHello;
begin
ShowMessage('Hello');
end;
end.
然后在Unit2中,您将调用此过程。您必须确保已经实例化Form2 - 或者为您的呼叫创建一个新实例。
不将此机制用于事件处理程序!
答案 2 :(得分:1)
您帖子的标题与文字
中的问题不符“从Unit2调用Button1单击Form1 / Unit1”对比 “现在,怎么可能将Unit1中的Button1Click变成showmessage,让我们在单击form1上的button1时说HelloFromUnit2?”
我在文中回答了问题(据我了解)。如果这不是您的意图,您可能需要在文本中重新解释该问题。
向Form1.Button1Click添加对unit2中新过程的调用
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hello');
SayHelloFromUnit2; // <---- add this
end;
在unit2中,将以下内容添加到界面部分:
procedure SayHelloFromUnit2;
以及实施部分
uses Vcl.Dialogs;
procedure SayHelloFromUnit2;
begin
ShowMessage('Hello from unit2');
end;