我以前做登录界面,采用这种方法:
主界面:Fmain 登录界面:Flogin 在Fmain 的:onCreate 事件里,把Flogin显示出来,用户登录成功后,应该传递一个power:string的参数到Fmain里,这个参数是用户权限,Fmain里,根据power来显示不同的菜单.
以前的做法是:定义一个全局变量就可以搞定,可是现在发现,如果页面之间经常需要传递参数,那得定义多少个全局变量啊? 一不小心就不知道在哪里把它给改变了..经常出错...
好像用消息传递可以搞定,不知哪位做过这方面的工作,或者有什么更好的方法???

解决方案 »

  1.   

    use 界面 ,然后就可以取那个界面的值了啊。比如在form2中取form1的值,在form2中use form1,然后在form2中通过 form1.**来取值。
    应该能取到值,但我可能说不不清楚,好久没用delphi了。
      

  2.   

    ls的方法应改为把两个FORM的变量放在一个公共单元里,然后这两个FORM use这个单元好点.
      

  3.   

    最好的是用OO的方法,用一个单元,单元中创建一个类,,
    这个类中包括所有的全局变量,输出给别的单元使用当然如果这个全局变量的类,实现保存到ini\注册表,从ini\注册表加载配置,然后输出相应的接口来给别的单元修改,大体上做好这些封闭,会很方便,同时也能很好的解决楼主所担心的情况
      

  4.   

    接二楼继续说:
        初学Delphi,我是这样解决的:
        登录窗口,验证口令=password,通过后,登录窗口.show:=False;
        主窗口调用password变量用这样的语句:登录窗口.password
        我试过,成功取得了password的值。
      

  5.   

    可以在LOGIN里调用FORMAIN里的一个函数来做。。
      

  6.   

    谢谢各位的回答, 昨晚自已想办法解决了这个问题,
    在login 类里,定义了一个私有数据:powerstr: string ;一个私有函数,procedure setpower(pw:string); //用于登录成功后,设置用权限,也就是修改powerstr..另外定义了一个公有函数:function getpower: string 在main类里调用它,这样就可以获得用户的权限,同时,也避免使用全局变量.  有点类似硬搬VC的设置方法,使用 get 和set方法.可是还没有尝试着设置powerstr的属性,使它只能被set方法修改,只能被get 方法读取..这样就完全可以避免误操作,修改了它的内容..感觉 do2008(事情做了,才是事情) 说的方法不错,把全局变量,放在一个类里,也比较好.