当前位置:编程学习 > Delphi >>

delphi如何在独立单元中定义全局变量?

我是新手,刚学delphi,各位大侠帮帮忙。现在做了一个登录系统,当验证身份成功后,需要把用户名赋值给全局变量,当子窗体需要签名时把全局变量赋值给相应控件。网友推荐的方法是:新建一个没有窗体的单元,把全部全局变量包含进去,在需要加入全局变量的单元里uses这个单元。我新建单元如下:unit Unit2;interfacevar  username:string;endimplementationend.
username是全局变量,但运行时显示错误,大意是声明了username变量但没有使用:[Hint] Unit2.pas(5): Variable 'username' is declared but never used in 'Unit2'我希望的是在程序运行中动态赋值,应该如何定义这个新单元和全局变量呢?
答案:

就如网友所说

File->new->unit,先新建一个单元文件,然后取一个名字,我的取名为U_common。

U_common的代码如下:

unit U_common;

interface

uses Forms,Classes,Windows,Controls;//这里要根据实际需要添加相应的类。

 

var

  pub_username : string;    //用户姓名

  pub_userId : string;          //用户ID
  pub_userRights : string;   //用户权限
  pub_userGrade : string;   //用户级别

 

implementation

 

end;

 

然后你在用户登录界面的users 部分引用u_common

然后在用户登录成功后的事件中写如下代码:

  with Adoquery1 do

  begin

    Close;

    sql.clear;

    //users 是你实际的用户表名    E_userid.text 是用户登录界面输入用户id的编辑框名称 

    sql.add('SELECT * FROM USERS WHERE USERID = '''+E_userid.text+''' AND PASSWORD = '''+E_password.text+'''');

    open;

    if RecordCount > 0 then

    begin

      pub_username  := Adoquery1.FieldByName('username').Asstring;

      pub_userId        := Adoquery1.FieldByName('userid').Asstring;

      pub_userRights := Adoquery1.FieldByName('userrights').Asstring;
      pub_userGrade := Adoquery1.FieldByName('usergrade').Asstring;

    end;

  end;

 

最后,你想在那个窗体调用已登陆信息,比如要取用户名或用户id

那么就在本窗体的Uses 中引入 U_common,然后直接将pub_username  pub_userid等全局变量赋值给相应的控件或者变量就ok了!

上一个:delphi 怎么提取Edit.text中的一个字符
下一个:如何去调用delphi写的服务里的函数?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,