请教高手???

david_chen 2002-12-19 06:04:01



Application.CreateForm(TForm1, Form1);
Form1.show;

当我执行以上的代码3次,原则上会:产生3个 Form1, 他们的name : Form1,Form1_1,
Form1_2,
但是这3个 Form1中的属性设置
在代码中赋值分别不同.

现在我想显示其中一个特别的Form1属性值(比如:Form1_2),怎么做??????????
...全文
41 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovingkane 2002-12-20
  • 打赏
  • 举报
回复
这种做法没有任何意义啊....一定要这么做的话....
你可以循环检查你产生的form的name属性,如果等于你要设置的那个form
就改变其属性吧

var
Form1: TForm1;
frm:TForm;
str:string;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm1, frm);
frm.show;
str:=frm.Name;//设定你要设置的form的选择条件

end;

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=0 to Application.ComponentCount-1 do
if TForm1(Application.Components[i]).Name=str then
TForm1(Application.Components[i]).Caption:='haha';
end;
david_chen 2002-12-20
  • 打赏
  • 举报
回复
TO : khzide(翰慈)

我的Form的name : Form1,Form1_1,Form1_2,是用name属性获得的

即:你在Form中加入一个按钮,并且在其中加入:
Application.CreateForm(TForm1, Form1);
Form1.show;
连续按3次;在每一个显示的Form中,获取其name,就是我讲的原则上的Form
name;

我的意思是:
当3个Form(Form1,Form1_1,Form1_2)在同一个内存中时,我想触发其中一个Form怎么做?
blazingfire 2002-12-19
  • 打赏
  • 举报
回复
用一个TScreen对象来作不是很难,代码如下:
var
AForm:TForm;
i:Integer;
begin
AForm:=nil;
for i:=0 to Screen.FormCount-1 do
if UpperCase(Screen.Forms[i].Name)='FORM2' then
begin
AForm:=Screen.Forms[i];
Break;
end;
if AForm<>nil then
AForm.ShowModal;
end;
khzide 2002-12-19
  • 打赏
  • 举报
回复
再向你说明一下,在TForm1类被创建实例时,它会在内部产生一个FName属性,该属性我们不必管它。我们只要用我们定义的TForm1实例 指钟访问它就可以了。如果你不是创建三个Form1,而是创建一个form1,form2,form3:TForm1;
那样的话你就可以看到效果了。其中form3的实例的fname属性就是Form1_2
khzide 2002-12-19
  • 打赏
  • 举报
回复
如果你真那样做的话你现在能访问到的就是form1_2
khzide 2002-12-19
  • 打赏
  • 举报
回复
你的语句有问题。什么叫原则上,根本就不会。一个名字怎能重复定义实例呢,那样的话原来的实例你就访问不到了,会发生内存泄露,windows程序的大弃啊
用户 昵称 2002-12-19
  • 打赏
  • 举报
回复
?
zsr 2002-12-19
  • 打赏
  • 举报
回复
???

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧