如何能把第一个窗体的变量传递给第二个窗体?(50分)

  • 主题发起人 主题发起人 blad_pitt
  • 开始时间 开始时间
B

blad_pitt

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个程序,主窗体是一个登陆窗体(就象OICQ的登陆框一样),我想把窗体中的登陆
名赋值给一个字符串变量,然后在第二个窗体中使用这个变量,可我发现这个变量成了空值
,原来保存的字符串没有了。敢问各位高手如何解决?
 
变量设为public型
在第二个窗体中uses 主窗体的单元。
 
在第二个窗体中uses 主窗体的单元
 
var
Form1: TForm1;
aa :String;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
aa :='12345';
Form2.ShowModal;
end;

************************************

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Text :=aa;
end;
 
第一:你的字符串变量定义在何处?
第二:你的窗体是不是动态创建的?(即用create)
正确方法为:
将字符串变量定义在public里
窗体不要动态创建(即在project option里应该是自动create的)
 
这些我都做了,还是不行啊,我在第二个窗体上动态创建了数据库,是不是这个原因啊?
我就是照“卷起千堆tyn”大侠的那样做的,可还是不行
 
在Form_Main中定义一个公有变量,例如“用户名(YHM)”,
public
YHM:string;
end;
在主窗体登录后,给变量付值,然后调用Form2,
begin
YHM:=XXXXXXXX; //付值
Form2 := TForm2.Create(Application);
Form2.ShowModal;
Form2.Free;
end;
在From2中uses主窗体,,假设主窗体的unit名称叫Unit_Main,
则在From2中的 implementation 行下面写上
uses Unit_Main;
然后就可以直接调用主窗体中的变量了,如
edit1.text:=Form_Main.YHM;
当然,你不能在调用From2之前就把主窗体给释放了,否则你是访问不到数据的。[:)]
 
我没有把主窗体释放,只是把住窗体的visible设成了false,因为登录完了吗,所以不想
让它再显示出来,这样也不行吗?
 
我试过了,主form窗体的visible设成false,不会影响其他form对其变量的调用,你再看看是不是别的地方错了?
 
我觉得如果你肯定你是象你所说的那样做的,出错的可能只有一个,就是在顺序上错了
先把第二个窗体show了,然后再给那个变量赋值,这样是不行的,具体为什么,我也不
知道,因为我以前也有过这样的错误,所以提出来,你看看是不是,不知道哪位大侠能
告诉我为什么?
 
如下:
在程序中先
建立并显示
fmPassword:=Application.Create(TfmPassword,fmPassword);
fmPassword.ShowModal;
当用户关闭时,并不Free fmPassword 在主窗体中Free
然后建立主窗体
fmMain:=Application.Create(TfmMain,fmMain);
fmMain.Show;
在主窗体中
Uses fmPassword;
然后进入fmMain.Create

Var YHm:String;
begin
YHM:=fmPassword.EdtPassword.text; //取得值
fmPassword.Free;
end;
 
1。建议把Form2设成主窗体,在上边加几个Panel通过Panel的Visibal实现登录过程,省得调过来调过去的。
2。卷起千堆雪兄说的Form2调用form1传递参数,我也实现了,不过不是在登录上用的。
我的意思是如果你要实现登录窗口,请用1,若要有其它用处请用2。
 
我试过了,原来真的如BOY1979所说的,我把顺序搞错了,不好意思麻烦大家为我操心了。
大家都得分!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
D
回复
0
查看
842
DelphiTeacher的专栏
D
后退
顶部