私のメインフォームの変数を別のフォームで使用したいと思います。各フォームにはそれぞれ独自のユニットがあります。異なるフォーム/ユニットに変数を渡す
私は「を使用と変数にアクセスすることを望んでいるユニット」彼らは私が公共の宣言でと実装の下に変数を置くべきであると述べた記事を見つけた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.
を取得したい場所から実装用途の下でその変数にアクセスしたいユニット、その後、ユニット名に私はエラー宣言されていないidentififierを取得し、私はアクティベート手順を使用し、単なるテストとして提示メッセージは
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.
私はこれについていくつかの記事を読みましたが、私はそれは複雑なコードである必要がdoes notのように、私は高校生だ、迷子に保ちます。
あなたは 'TFrmLogin'のインスタンスを作成する必要がどこか。次に、そのインスタンスを通して 'iUser'を得ることができます:' frmLoginInstance.iUser'。通常、グローバルな 'frmLogin'変数(削除する)を使用して、それを必要な場所でローカルに宣言するべきではありません。おそらく 'TFrmResult'宣言の中にあります。また、 'Login_u'から' Result_u'を削除します。 –
* "彼らは変数を公に宣言する必要があると言った" * - それはいいです。 - "* and under implementation"が、変数 '*'にアクセスしたいユニットを使用しています。これは不要です。 'Login_u'から 'Result_u use 'を削除してください。 - * "実装でその変数にアクセスしたいユニットの中で、ユニット名" * - でもOKです。 ---あなたが欠けているのは、 "ShowMessage(frmLogin.iUser);'フィールドを修飾することです(もちろん、iUserは整数なので失敗します)。 –