关于全局变量的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 js916
  • 开始时间 开始时间
J

js916

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现这样一个目标,form2显示出来后,不点任何按钮,form2的Label1就显示form1中edit1中刚刚输入的text的值,不知道怎么弄,请各位大虾帮帮忙?
-----------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
aaa:string;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
aaa:=Edit1.Text;
form1.Hide;
form2.show;
end;
end.
--------------------------------------------------------------------------
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
Label1.caption:=form1.aaa;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
form1.close;
end;
end.
----------------------------------------------------------------------------
 
直接unit2单元中use unit1,在formCreate(或onshow)中
label1.caption := Fomr1.edit1.text;
unit1不需要use unit2
 
procedure TForm1.Button1Click(Sender: TObject);
begin
aaa:=Edit1.Text;
form1.Hide;
form2.Label1.caption:=aaa;
form2.show;
end;
 
简单的要了命了
 
不需要用全局变量的

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses
Unit2;

{$R *.dfm}

//如果是想在Form2显示出来时,Form2.Label1显示Edit1的Text
//光用下面这个过程就行了
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Label1.Caption := Edit1.Text;
Form2.Show;
end;

//如果要在Form2显示后,Form2.Label1一直跟踪显示Edit1的内容,
//再加上下面这个过程
procedure TForm1.Edit1Change(Sender: TObject); //Edit1.Text有变化时同步Form2.Label1
begin
Form2.Label1.Caption := Edit1.Text;
end;

end.
 
我觉得也不用全局变量吧,因为只要你在USES中加入UNIT1,在FORM2中就可以直接将FORM1中的元件值赋值给FORM2中的元件了!

如:
procedure TForm2.FormCreate(Sender: TObject);
begin
Label1.caption:=form1.edit1.text;
end;
 
LZ现在会不会觉得200分问题太简单了,呵呵.不过,难者不会,会者不难,所以也没什么的
 
直接引用unit1就可以了!
 
呵呵,我是菜鸟,大家不要笑啊
除了ANiDelphi,大家都没看懂我的意思,不过还好ANiDelphi看懂,我的问题解决乐,非常感谢,加分!!!
 
接受答案了.
 
后退
顶部