请问在过程里能直接用全局变量吗?为什么我非要在变量前面加上form1.才可以使用,好麻烦哦(50分)

  • 主题发起人 主题发起人 bocai
  • 开始时间 开始时间
不知道你的全局变量是在什么地方声明的?
 
在同一单元里,应该是可以的,不用类似From1.TmpStr
 
在别的单元也可以,
在实现处
如:

var
Form1 : TForm1;
str : string;

别的地方就可以直接引用这个变量了
 
在FORM1的公共变量中定义
在需调用的FORM私有变量中加上uses form1
 
单独用一个unit作为全局变量声明pubUnit,需要的form中加上uses pubUnit
 
如果你的过程中用到了窗体上的组件,你可以将该过程声明为窗体的私有(或别的什么)方法。

例如:
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure WriteText(Str:String)
//私有方法
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WriteText(Str: String);
begin
Edit1.Text:=Str
//直接使用Edit1
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WriteText('Do you know?');
end;
 
如果你把全局变量放在TForm1的public里面,在其他单元访问当然要加form1,
但你在implementation上面用
var
全局变量
其他单元只要uses 了这个单元就可以直接使用了。
 
不是啊,大家没有理解她的意思:
她的意思是在一个窗体外的过程中,使用窗体中的东西吧?用With就可以了,简单:
procedure Test;
begin
with Form1 do
begin
Edit1.Text:='Test';
..........
end

end;
 
kingron:
对,就是在窗体外的过程中使用,有没有办法不用加form1?
 
没有,必须指明,不过用一个With就解决了啊。
 
creation-zy:
谢谢
 
多人接受答案了。
 
后退
顶部