关于变量的问题?????????????????? 向大家请教,在delphi中,比如说一个工程建立了两个窗体(就应该有相应的两段原程序),在form1窗体中定义的变量a,能不能在form2窗体中直接通过Tform1.a的这种形式引用,如果不行,能不能通过其他的方法,直接引用其他窗体的变量????????????????????????? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将变量a在form1窗体中定义成Pubilc,在另外的窗体中可以这样: with TForm1.Create(Application) do begin a:= xxx; end;要在引用的窗体的Uses 语句加上form1的单元。 可以啊,把变量定义为公有变量,另一个窗体就可以访问了啊,例如:type TForm1 = class(TForm) public a:string; end;在TForm2中就可以访问Form1.a; 首先要在form2中的use中加入form1,需要引用的form1的变量要加在form1的public区。 听大家这么一说,我觉得在delphi中的类方面的东西和c++中的类的区别挺大的哦!!!在c++中如果把成员定义为公有的,只是能够让相应的对象能够直接访问,如果把成员定义为私有的,只能构通过类中的公有成员进行访问.(用了不久的delphi了,还没有认真的看完过一本delphi的书,一直都是直接甩起手就用,真是惭愧)听了大家说的,我现在有了一些理解了;在delphi中,建立的一个窗体,就相当于是声明了一个类,在这个窗体的源文件上写的无论是变量,函数,还是过程,都是所建立的窗体的类的成员.但是我想不通delphi中的什么才相当于是c++中的对象,或者delphi就根本不支持面向对象(只是面向控件).另外再请大家推荐一本比较好的delphi的书!!!!!!!!!!! 我刚才为了验证大家教给我的东西,我建立了一个工程,但是出了些问题请大家分析分析(在这个工程中建立了两个窗体form1,form2)unit Unit1;interfaceuses 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 } a:integer; end;var Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begina:=50000;form2.show;end;end.unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, WinSkinData, StdCtrls;type TForm2 = class(TForm) SkinData1: TSkinData; Edit1: TEdit; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form2: TForm2;implementationusesunit1;{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);beginedit1.Text:=inttostr(form1.a);end;end.我运行起来后发现为什么在form2窗体中的edit1中的数字始终显示的是0 呢,请大家帮我分析分析(我估计我自己又是犯了什么概念性的错误) edit1.Text:=inttostr(form1.a);这句不能写在FORM2的CREATE事件中,因为FORM1和FORM2是同时创建的,而这时你还没对A赋值,所以就是0。你可以放在FORM2 DBCLICK事件中 我把它改成了:procedure TForm2.FormClick(Sender: TObject);beginedit1.Text:=inttostr(form1.a);end;但是这回是什么都不显示,edit1.text是空的,大家帮忙分析一下是怎么回事??? 请教Delphi同学们一个关于TPanel和TToolBar的问题 菜鸟请问 为什么这个dll总是出错啊? 磁条读卡器问题 在线等:CopyFileTo函数怎样使用? 谁给我说说Delphi的团队开发? 寻找azpr的注册码,100分,先谢谢了 求购 二手原装笔记本一个 老鱼,老千,小新,midas与b/s是一回事吗?偶对这几种技术分不清了?//牛虻 现在开始学delphi,看什么书比较好 请大家给推荐个控件,能实现想WORD那样的功能 QuickReport组件预览、打印数据不完整,只能打前几页数据,后面的数据似乎丢了
with TForm1.Create(Application) do
begin
a:= xxx;
end;
要在引用的窗体的Uses 语句加上form1的单元。
type
TForm1 = class(TForm) public
a:string;
end;
在TForm2中就可以访问
Form1.a;
unit Unit1;interfaceuses
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 }
a:integer;
end;var
Form1: TForm1;
implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
a:=50000;
form2.show;
end;end.
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WinSkinData, StdCtrls;type
TForm2 = class(TForm)
SkinData1: TSkinData;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation
uses
unit1;{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
edit1.Text:=inttostr(form1.a);
end;end.我运行起来后发现为什么在form2窗体中的edit1中的数字始终显示的是0 呢,请大家帮我分析分析(我估计我自己又是犯了什么概念性的错误)
begin
edit1.Text:=inttostr(form1.a);
end;但是这回是什么都不显示,edit1.text是空的,大家帮忙分析一下是怎么回事???