用户登录程序后,在后面的窗体中,想知道是谁登录(仅仅传递用户名)。
在尽量不使用全局变量的情况下可以用什么方法?朋友说用函数调用,应该怎么实现呢?

解决方案 »

  1.   

    unit U_main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, SUIMainMenu, ExtCtrls, SUIForm, ToolWin, ComCtrls,
      SUIToolBar, ImgList, ActnList, StdActns, StdCtrls, Buttons, Grids,
      DBGrids, DB, ADODB, AppEvnts;type
      TF_main = class(TForm)
        MM_main: TsuiMainMenu;
        N_system: TMenuItem;    
      private
        { Private declarations }
      public
        aaa:integer;
        { Public declarations }
      end;在form2中要调用变量aaa,则现在form2的uses中加上u_main。调用时用
    F_MAIN.AAA就可以了。
      

  2.   

    要定义在public中,这样其他窗体才能调用。
      

  3.   

    用StatusBar  在win32页里有这个控件
    放在主窗体上后 双击statusBar, 添加2个项目, 第一项的caption设置为: 操作员 第二项的caption为空
    当登录成功后:   StatusBar1.Panels.Items[1].Text:=登录的用户名登录成功后 状态栏显示:|操作员   | 某某某
      

  4.   

    如果你的login_form是先于mainform的
    你可以在项目的dpr文件中这么写
    var frm_Main:Tfrm_Main,frm_Main:Tfrm_Login;
    begin
      Application.Initialize;
      frm_login:=Tfrm_Login.create(self);
      frm_login.showmodal;
      if frm_login.modalResult=6 then 
      begin
        Application.CreateForm(Tfrm_Main, frm_Main);
        frm_main.LoginName:=frm_login.LoginName;
        Application.Run;
      end
      else
      begin
        application.Terminate;
      end
    end.如果你的mainfrom先于loginform
    可以在mainform中定义个private的变量m_login_form:tfrm_Login;
    然后self.loginName:=m_login_form.loginName;
    其中loginName是string变量,用来保存登录名
    我不知道我说的明白不明白
    或者有更好的办法
    请楼下的补充
      

  5.   

    不要用全局变量,在需要用户名的窗体中加 UserName 属性.
      

  6.   

    也可以通过读写ini文件来实现
      

  7.   

    可以先存到WEB上,以后从WEB上取
      

  8.   

    通过读取ini文件的方法不错~~~
      

  9.   

    可建一单位文件PublicUnit.Pas,在该单位定义全局变量,需要使用时Uses PublicUnit即可。
      

  10.   

    所有需要用户名的窗体都不得添加属性
    published
     property UserName:String Reaf FUsername WRite SetUserName;
    end;
    在创建窗体后将值传递.不要在public 下定义变量.