我试了在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.
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;
地方放错没有??
是不是我声明那个变量的地方放错了啊??
这是代码:
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建立的时候初始化吗??
但是又有了个新问题。。我是想用那个变量去动态生成一个treeview,而我没找到treeview的初始化函数,所以才在form2建立的时候初始化treeview的。。可以告诉我treeview怎么在form建立的时候初始化吗??
#5
而我没找到treeview的初始化函数
///////////不是你的错,因为根本就没有什么初始化函数
只有动态创建.
在form2建立的时候初始化Treeview?
///////////放在form2的oncreate或者是onshow都可以的。。。。
///////////不是你的错,因为根本就没有什么初始化函数
只有动态创建.
在form2建立的时候初始化Treeview?
///////////放在form2的oncreate或者是onshow都可以的。。。。
#6
但是我需要那个变量去初始化treeview啊。。怎么解决呢?
#7
delphi的对象实例化的时候一般都回有一个初始值的,比方integer类型的数据就是0,这没什么好奇怪的。你如果想要实现,新窗口从form1中的一个参数哪里获得值的话,可以在新窗口中uses form1的那个文件,然后在窗口onCreate或者OnShow的时候读出来那个数,然后给你的Cauthority : integer赋值就可以了。
关于动态构造TreeView的问题,基本上调用几个TreeNode的add或者addchild方法基本上就能够搞定。
关于动态构造TreeView的问题,基本上调用几个TreeNode的add或者addchild方法基本上就能够搞定。
#8
我就是放在form2的oncreate的啊。。可是那个变量在form2初始化的时候还没赋值呢
delphi会先把所有的form先初始化一遍
delphi会先把所有的form先初始化一遍
#9
1、确认已经uses进去了form1(参数来源,这里暂称之为form1)。
2、在form2(新建的窗口,赞成为form2)OnCreate事件当中从form1读取数值,给form2的Cauthority赋值。
3、在form2的OnCreate或者OnShow事件当中动态的构造TreeView,当然如果写在OnCreate里面的话,要注意赋值和动态构造的先后顺序。
2、在form2(新建的窗口,赞成为form2)OnCreate事件当中从form1读取数值,给form2的Cauthority赋值。
3、在form2的OnCreate或者OnShow事件当中动态的构造TreeView,当然如果写在OnCreate里面的话,要注意赋值和动态构造的先后顺序。
#10
你可以让form2主动去读数据的
看现在你是让form1给form2去赋值,这样的话就不行了,为什么不让form2去主动的读取那???
看现在你是让form1给form2去赋值,这样的话就不行了,为什么不让form2去主动的读取那???
#11
问题已经解决,在form2.show里面调用那个数据就可以了
to:heluqing(鉴之小河〖挣大钱娶美女〗)
非常谢谢,不过你还是没看动我的意思。。我意思是,那个变量是在form1。buttonclick事件里面赋值的,而delphi会在运行的时候把所有的form都先初始化了,也就是先调用了create,而这个时候那个变量还没赋值,所以在form2.create里面调用这个变量的值是0
高兴啊。。困绕了我一晚上,主要是没想到delphi会在运行的时候把所有的form都先初始化
该去睡觉了 :p
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.
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;
地方放错没有??
是不是我声明那个变量的地方放错了啊??
这是代码:
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建立的时候初始化吗??
但是又有了个新问题。。我是想用那个变量去动态生成一个treeview,而我没找到treeview的初始化函数,所以才在form2建立的时候初始化treeview的。。可以告诉我treeview怎么在form建立的时候初始化吗??
#5
而我没找到treeview的初始化函数
///////////不是你的错,因为根本就没有什么初始化函数
只有动态创建.
在form2建立的时候初始化Treeview?
///////////放在form2的oncreate或者是onshow都可以的。。。。
///////////不是你的错,因为根本就没有什么初始化函数
只有动态创建.
在form2建立的时候初始化Treeview?
///////////放在form2的oncreate或者是onshow都可以的。。。。
#6
但是我需要那个变量去初始化treeview啊。。怎么解决呢?
#7
delphi的对象实例化的时候一般都回有一个初始值的,比方integer类型的数据就是0,这没什么好奇怪的。你如果想要实现,新窗口从form1中的一个参数哪里获得值的话,可以在新窗口中uses form1的那个文件,然后在窗口onCreate或者OnShow的时候读出来那个数,然后给你的Cauthority : integer赋值就可以了。
关于动态构造TreeView的问题,基本上调用几个TreeNode的add或者addchild方法基本上就能够搞定。
关于动态构造TreeView的问题,基本上调用几个TreeNode的add或者addchild方法基本上就能够搞定。
#8
我就是放在form2的oncreate的啊。。可是那个变量在form2初始化的时候还没赋值呢
delphi会先把所有的form先初始化一遍
delphi会先把所有的form先初始化一遍
#9
1、确认已经uses进去了form1(参数来源,这里暂称之为form1)。
2、在form2(新建的窗口,赞成为form2)OnCreate事件当中从form1读取数值,给form2的Cauthority赋值。
3、在form2的OnCreate或者OnShow事件当中动态的构造TreeView,当然如果写在OnCreate里面的话,要注意赋值和动态构造的先后顺序。
2、在form2(新建的窗口,赞成为form2)OnCreate事件当中从form1读取数值,给form2的Cauthority赋值。
3、在form2的OnCreate或者OnShow事件当中动态的构造TreeView,当然如果写在OnCreate里面的话,要注意赋值和动态构造的先后顺序。
#10
你可以让form2主动去读数据的
看现在你是让form1给form2去赋值,这样的话就不行了,为什么不让form2去主动的读取那???
看现在你是让form1给form2去赋值,这样的话就不行了,为什么不让form2去主动的读取那???
#11
问题已经解决,在form2.show里面调用那个数据就可以了
to:heluqing(鉴之小河〖挣大钱娶美女〗)
非常谢谢,不过你还是没看动我的意思。。我意思是,那个变量是在form1。buttonclick事件里面赋值的,而delphi会在运行的时候把所有的form都先初始化了,也就是先调用了create,而这个时候那个变量还没赋值,所以在form2.create里面调用这个变量的值是0
高兴啊。。困绕了我一晚上,主要是没想到delphi会在运行的时候把所有的form都先初始化
该去睡觉了 :p
to:heluqing(鉴之小河〖挣大钱娶美女〗)
非常谢谢,不过你还是没看动我的意思。。我意思是,那个变量是在form1。buttonclick事件里面赋值的,而delphi会在运行的时候把所有的form都先初始化了,也就是先调用了create,而这个时候那个变量还没赋值,所以在form2.create里面调用这个变量的值是0
高兴啊。。困绕了我一晚上,主要是没想到delphi会在运行的时候把所有的form都先初始化
该去睡觉了 :p
#12
现在去睡觉,搂住强人...