midform变量如何私有。。 使用全局变量保存,如果使用私服域,在MidFrom外不能调用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果用全局变量。那么同时创建两个midform的时候。变量会冲突。。 如果用全局变量。那么同时创建两个midform的时候。变量会冲突。。怎么可能冲突呢?每个实例的变量都有对应的内存地址,不同实例的变量是不同的内存,共有私有只是控制他们是否可以被外界访问。 frmMain为普通窗体frmMDI为MDI窗体strTest为TFrmMDI的public变量单击frmMain上的btn1,判断实例MDI_1是否存在,不存在则创建一个frmMDI实例MDI_1,并赋值strTest,显示strTest点击frmMain上的btn2,判断实例MDI_2是否存在,不存在则创建一个frmMDI实例MDI_2,并赋值strTest,显示strTestunit uMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TfrmMain = class(TForm) btn1: TButton; btn2: TButton; procedure btn2Click(Sender: TObject); procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var frmMain: TfrmMain;implementationuses uMDI;{$R *.dfm}procedure TfrmMain.btn1Click(Sender: TObject);var nForm:TFrmMDI; strFormName:string;begin strFormName:='MDI_1'; nForm:=TfrmMDI(FindGlobalComponent(strFormName)); if nForm=nil then begin nForm:=TfrmMDI.Create(self); nForm.Name:=strFormName; end; nForm.strTest:='my name is '+strFormName; nForm.Caption:=nForm.strTest; nForm.Show;end;procedure TfrmMain.btn2Click(Sender: TObject);var nForm:TfrmMDI; strFormName:string;begin strFormName:='MDI_2'; nForm:=TfrmMDI(FindGlobalComponent(strFormName)); if nForm=nil then begin nForm:=TfrmMDI.Create(self); nForm.Name:=strFormName; end; nForm.strTest:='my name is '+strFormName; nForm.Caption:=nForm.strTest; nForm.Show;end;end.unit uMDI;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TfrmMDI = class(TForm) private { Private declarations } public { Public declarations } strTest:string; end;var frmMDI: TfrmMDI;implementation{$R *.dfm}end. 大大,还有一个问题。就是关于self的用法。比如在窗体函数,或者过程中可以使用self.strTest;但是如果我在非窗体函数中用什么替代呢。感激! 非窗体函数中用 窗体实例名.strTest 寻求编程思路,好思路有高分 Java 和.net 我该选择谁? 如何用向QQ软件的密码框输入密码,然后再自动点击登陆按钮(用程序实现) 下面的这些VC语句在DELPHI中怎么写呢 杀了我吧,access2000+d7的ADO数据刷新问题,一年前就遇到了 SQL语句的问题?(在线等待!!!!急!!!) 请问如何让edit里的字符是从右到左输入? DSPACK_V233安装问题 长字符串和执行文件(全分送上) 菜鸟问题集,答对给分 求数据库大虾给浓缩一下 请教用delphi开发触摸屏查询系统的方法?
如果用全局变量。那么同时创建两个midform的时候。变量会冲突。。
如果用全局变量。那么同时创建两个midform的时候。变量会冲突。。怎么可能冲突呢?
每个实例的变量都有对应的内存地址,不同实例的变量是不同的内存,共有私有只是控制他们是否可以被外界访问。
frmMDI为MDI窗体
strTest为TFrmMDI的public变量
单击frmMain上的btn1,判断实例MDI_1是否存在,不存在则创建一个frmMDI实例MDI_1,并赋值strTest,显示strTest
点击frmMain上的btn2,判断实例MDI_2是否存在,不存在则创建一个frmMDI实例MDI_2,并赋值strTest,显示strTestunit uMain;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TfrmMain = class(TForm)
btn1: TButton;
btn2: TButton;
procedure btn2Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementationuses
uMDI;{$R *.dfm}procedure TfrmMain.btn1Click(Sender: TObject);
var
nForm:TFrmMDI;
strFormName:string;
begin
strFormName:='MDI_1';
nForm:=TfrmMDI(FindGlobalComponent(strFormName));
if nForm=nil then
begin
nForm:=TfrmMDI.Create(self);
nForm.Name:=strFormName;
end;
nForm.strTest:='my name is '+strFormName;
nForm.Caption:=nForm.strTest;
nForm.Show;
end;procedure TfrmMain.btn2Click(Sender: TObject);
var
nForm:TfrmMDI;
strFormName:string;
begin
strFormName:='MDI_2';
nForm:=TfrmMDI(FindGlobalComponent(strFormName));
if nForm=nil then
begin
nForm:=TfrmMDI.Create(self);
nForm.Name:=strFormName;
end;
nForm.strTest:='my name is '+strFormName;
nForm.Caption:=nForm.strTest;
nForm.Show;
end;end.
unit uMDI;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TfrmMDI = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
strTest:string;
end;var
frmMDI: TfrmMDI;implementation{$R *.dfm}end.
大大,还有一个问题。
就是关于self的用法。比如在窗体函数,或者过程中可以使用self.strTest;但是如果我在非窗体函数中用什么替代呢。感激!