在delphi下,如何调用其他单元的过程?
我在delphi下编写了一个测试程序,想通过单击单元Unit1的按钮,调用另一个单元(Unit2)里的过程(test),过程的功能是将一段字符串赋给单元Unit1里的la...
我在delphi下编写了一个测试程序,想通过单击单元Unit1的按钮,调用另一个单元(Unit2)里的过程(test),过程的功能是将一段字符串赋给单元Unit1里的label1.Caption。
但是编译后,显示:
Undeclared identifier:'test'
---------------------------------------------------------------------------------
具体代码如下:
Unit1的代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
test();
end;
end.
--------------------------------------------------------------------------------------
Unit2的代码:
unit Unit2;
interface
implementation
uses Unit1;
procedure test();
begin
form1.Label1.Caption:='这是由Unit2.pas传递过来的。';
end;
end.
--------------------------------------------------------------------------------------
project1.dpr 代码:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas';
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
--------------------------------------------------------------------------------------------------
请帮忙解答,问题错在哪里,谢谢!! 展开
但是编译后,显示:
Undeclared identifier:'test'
---------------------------------------------------------------------------------
具体代码如下:
Unit1的代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
test();
end;
end.
--------------------------------------------------------------------------------------
Unit2的代码:
unit Unit2;
interface
implementation
uses Unit1;
procedure test();
begin
form1.Label1.Caption:='这是由Unit2.pas传递过来的。';
end;
end.
--------------------------------------------------------------------------------------
project1.dpr 代码:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas';
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
--------------------------------------------------------------------------------------------------
请帮忙解答,问题错在哪里,谢谢!! 展开
展开全部
project1.dpr 代码:
program Project1;
uses
Forms,
Unit2 in 'Unit2.pas',
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
//将project1.dpr 代码改成这样应该可以啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这需要在本单元中包含被调用单元。
公用函数就是这样的,你可以新建一个unit1,用开存放公用函数和过程。
然后让每个窗体都包含这个单元,这样就可以使用里面的函数或过程了。
调用时要以单元名.函数的格式,(unit1.show()).
公用函数就是这样的,你可以新建一个unit1,用开存放公用函数和过程。
然后让每个窗体都包含这个单元,这样就可以使用里面的函数或过程了。
调用时要以单元名.函数的格式,(unit1.show()).
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路
1\定义公共变量 public ss:string, unit1中加上 uses unit2
2\另一个单元(Unit2)里的过程(test)的输出值赋给ss;
3\单元Unit1的按钮,调用时,取 ss
1\定义公共变量 public ss:string, unit1中加上 uses unit2
2\另一个单元(Unit2)里的过程(test)的输出值赋给ss;
3\单元Unit1的按钮,调用时,取 ss
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TForm2 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure test();
像这样的 然后 form2.test(Sender: TObject);
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure test();
像这样的 然后 form2.test(Sender: TObject);
追问
问题依旧
我编写的Unit2只是一个pas文件,不是窗体
追答
你仔细读教程就发现
uses Unit2;
这样的不能放同一个地方
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
放到这个最后面
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要在test() 前面加unit2 或form2
写上 form2.test() 或 unit2.test() 你试试
写上 form2.test() 或 unit2.test() 你试试
更多追问追答
追问
写上unit2.test();
错误依旧
追答
procedure test(); 在接口部分声明一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询