怎么把form1的一个变量传到form2去啊?

时间:2020-12-14 00:57:27
怎么把form1的一个变量传到form2去啊?

我试了在form1里面声明了一个public integer变量,然后在form2调用。。但是调用的值一直都是0

12 个解决方案

#1


你有没有为这个变量赋值?
如果调用功能能实现的话,就只有这个问题了。

#2


//Form1的代码--------------------------------------------
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    val: integer;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  val:=100;
  form2.Show;
end;

end.
//Form2的代码--------------------------------------------
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  showmessage(inttostr(form1.val));
end;

end.

#3


当然赋过了。。我在form1调用都是正常的。。
是不是我声明那个变量的地方放错了啊??
这是代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, ADODB, jpeg;

type
  TForm_Logo = class(TForm)
    Label3: TLabel;
    LOGO_backimage: TImage;
    Edit1: TEdit;
    RaB_stu: TRadioButton;
    RaB_academy: TRadioButton;
    Edit2: TEdit;
    RaB_manage: TRadioButton;
    Label2: TLabel;
    Label1: TLabel;
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADOStoredProc1: TADOStoredProc;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Cauthority : integer;//就是这个变量
  end;
地方放错没有??

#4


我找到问题了。。原来delphi会先把所有的form先初始化一遍,而我是在form2初始化的时候调用的,form1中的变量还没来得及赋值。
但是又有了个新问题。。我是想用那个变量去动态生成一个treeview,而我没找到treeview的初始化函数,所以才在form2建立的时候初始化treeview的。。可以告诉我treeview怎么在form建立的时候初始化吗??

#5


而我没找到treeview的初始化函数
///////////不是你的错,因为根本就没有什么初始化函数
只有动态创建.
在form2建立的时候初始化Treeview?
///////////放在form2的oncreate或者是onshow都可以的。。。。

#6


但是我需要那个变量去初始化treeview啊。。怎么解决呢?

#7


delphi的对象实例化的时候一般都回有一个初始值的,比方integer类型的数据就是0,这没什么好奇怪的。你如果想要实现,新窗口从form1中的一个参数哪里获得值的话,可以在新窗口中uses form1的那个文件,然后在窗口onCreate或者OnShow的时候读出来那个数,然后给你的Cauthority : integer赋值就可以了。
关于动态构造TreeView的问题,基本上调用几个TreeNode的add或者addchild方法基本上就能够搞定。

#8


我就是放在form2的oncreate的啊。。可是那个变量在form2初始化的时候还没赋值呢
delphi会先把所有的form先初始化一遍

#9


1、确认已经uses进去了form1(参数来源,这里暂称之为form1)。
2、在form2(新建的窗口,赞成为form2)OnCreate事件当中从form1读取数值,给form2的Cauthority赋值。
3、在form2的OnCreate或者OnShow事件当中动态的构造TreeView,当然如果写在OnCreate里面的话,要注意赋值和动态构造的先后顺序。

#10


你可以让form2主动去读数据的
看现在你是让form1给form2去赋值,这样的话就不行了,为什么不让form2去主动的读取那???

#11


问题已经解决,在form2.show里面调用那个数据就可以了
to:heluqing(鉴之小河〖挣大钱娶美女〗) 
非常谢谢,不过你还是没看动我的意思。。我意思是,那个变量是在form1。buttonclick事件里面赋值的,而delphi会在运行的时候把所有的form都先初始化了,也就是先调用了create,而这个时候那个变量还没赋值,所以在form2.create里面调用这个变量的值是0

高兴啊。。困绕了我一晚上,主要是没想到delphi会在运行的时候把所有的form都先初始化
该去睡觉了  :p

#12


现在去睡觉,搂住强人...

#1


你有没有为这个变量赋值?
如果调用功能能实现的话,就只有这个问题了。

#2


//Form1的代码--------------------------------------------
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    val: integer;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  val:=100;
  form2.Show;
end;

end.
//Form2的代码--------------------------------------------
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  showmessage(inttostr(form1.val));
end;

end.

#3


当然赋过了。。我在form1调用都是正常的。。
是不是我声明那个变量的地方放错了啊??
这是代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, ADODB, jpeg;

type
  TForm_Logo = class(TForm)
    Label3: TLabel;
    LOGO_backimage: TImage;
    Edit1: TEdit;
    RaB_stu: TRadioButton;
    RaB_academy: TRadioButton;
    Edit2: TEdit;
    RaB_manage: TRadioButton;
    Label2: TLabel;
    Label1: TLabel;
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADOStoredProc1: TADOStoredProc;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Cauthority : integer;//就是这个变量
  end;
地方放错没有??

#4


我找到问题了。。原来delphi会先把所有的form先初始化一遍,而我是在form2初始化的时候调用的,form1中的变量还没来得及赋值。
但是又有了个新问题。。我是想用那个变量去动态生成一个treeview,而我没找到treeview的初始化函数,所以才在form2建立的时候初始化treeview的。。可以告诉我treeview怎么在form建立的时候初始化吗??

#5


而我没找到treeview的初始化函数
///////////不是你的错,因为根本就没有什么初始化函数
只有动态创建.
在form2建立的时候初始化Treeview?
///////////放在form2的oncreate或者是onshow都可以的。。。。

#6


但是我需要那个变量去初始化treeview啊。。怎么解决呢?

#7


delphi的对象实例化的时候一般都回有一个初始值的,比方integer类型的数据就是0,这没什么好奇怪的。你如果想要实现,新窗口从form1中的一个参数哪里获得值的话,可以在新窗口中uses form1的那个文件,然后在窗口onCreate或者OnShow的时候读出来那个数,然后给你的Cauthority : integer赋值就可以了。
关于动态构造TreeView的问题,基本上调用几个TreeNode的add或者addchild方法基本上就能够搞定。

#8


我就是放在form2的oncreate的啊。。可是那个变量在form2初始化的时候还没赋值呢
delphi会先把所有的form先初始化一遍

#9


1、确认已经uses进去了form1(参数来源,这里暂称之为form1)。
2、在form2(新建的窗口,赞成为form2)OnCreate事件当中从form1读取数值,给form2的Cauthority赋值。
3、在form2的OnCreate或者OnShow事件当中动态的构造TreeView,当然如果写在OnCreate里面的话,要注意赋值和动态构造的先后顺序。

#10


你可以让form2主动去读数据的
看现在你是让form1给form2去赋值,这样的话就不行了,为什么不让form2去主动的读取那???

#11


问题已经解决,在form2.show里面调用那个数据就可以了
to:heluqing(鉴之小河〖挣大钱娶美女〗) 
非常谢谢,不过你还是没看动我的意思。。我意思是,那个变量是在form1。buttonclick事件里面赋值的,而delphi会在运行的时候把所有的form都先初始化了,也就是先调用了create,而这个时候那个变量还没赋值,所以在form2.create里面调用这个变量的值是0

高兴啊。。困绕了我一晚上,主要是没想到delphi会在运行的时候把所有的form都先初始化
该去睡觉了  :p

#12


现在去睡觉,搂住强人...