【发布时间】:2016-09-28 20:33:56
【问题描述】:
我想在另一个表单中使用我的主表单中的变量,每个表单都有自己的单位。
我想在 Result_u 中使用 Login_u 中的 iUser
我找到了一篇文章,他们说我应该将变量放在公共声明中并在实现下“使用,然后是想要访问变量的单元”。同样在要访问该变量的单元中使用,然后是要从中获取变量的单元名称
unit Login_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;
type
TfrmLogin = class(TForm)
btnLogin: TButton;
cbxUser: TComboBox;
procedure btnLoginClick(Sender: TObject);
private
{ Private declarations }
public
iUser:Integer;
{ Public declarations }
end;
var
frmLogin: TfrmLogin;
implementation
uses Result_u;
{$R *.dfm}
procedure TfrmLogin.btnLoginClick(Sender: TObject);
begin
iUser:= cbxUser.ItemIndex;
end;
end;
end.
在我的结果单元中,我收到错误未声明的标识符,我使用了激活过程和显示消息作为测试
unit Result_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, jpeg, ExtCtrls;
type
TfrmResult = class(TForm)
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmResult: TfrmUitslae;
implementation
uses Login_u;
{$R *.dfm}
procedure TfrmUitslae.FormActivate(Sender: TObject);
begin
ShowMessage(iUser);
end;
end.
我已经阅读了一些关于此的文章,但我一直迷路,我是一名高中生,所以不需要复杂的代码。
【问题讨论】:
-
您需要在某处创建
TFrmLogin的实例。然后您可以通过该实例获取iUser:frmLoginInstance.iUser。通常你不应该使用全局frmLogin变量(删除它)并在你需要的地方声明它。也许在您的TFrmResult声明中。并从Login_u中删除uses Result_u。 -
" 他们说我应该将变量放在公共声明中" - 没关系。 - “并在实施中'使用然后想要访问变量的单元'” - 这是不必要的,从'Login_u'中删除
uses Result_u;。 - “也在想要访问该变量的单元中使用,然后是单元名称” - 没关系。 --- 你缺少的是限定字段 ->ShowMessage(frmLogin.iUser);(当然它会失败,因为 iUser 是一个整数)。