动态创建窗口问题!!! 我不会!!去www.delphi32.com上去找高手!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先定义一个全局变量i再写一个函数function s():boolean;begins:='myform';myform:=Tmyform.create(self);with tform(findcomopent(s))begincom.name:=s+inttostr(i));com.width:=600;....属性赋值省了end;end;创建时调用比如我要创建myform1i:=1;s(); 上面兄弟的做法還可以,不過功能不是很好。如果我要創建20個窗口(myform1....myform20),哪上面的函數是不能實現的。關鍵語句:myform:=TMyform.create(self);在函數中不好處理。如果能寫出這樣的函數:createform(formname:string);直接調用createform('myform1'),createform('myform2')....createform('myform20')就能創建20個窗口就好注:myform1...myform2是在設計狀態下已創建好的。然後從Auto-createForms移到avilable-forms中,然後再動態創建.最後非常感謝所有參與的人。 偶曾经干过这样一件事拿出来看看不知道你说的是不是这意思:TactiveScreenType=(acchildform1,acchildform2,acchildform3,acchildform4,acchildform5);procedure Tfrmmain.SetActiveScreen(Sender:TObject;itemtag:integer);begin if Assigned(ActiveScreen) then begin Tmenuitem(OldSender).Checked :=false; ActiveScreen.Free ; ActiveScreen:=nil; end; case ActiveScreenType of acchildform1: begin ActiveScreen:=Tfrmrk.Create(self); Tfrmrk(ActiveScreen).PageControl1.ActivePageIndex := itemtag ; //ActiveScreen.Show ; Tfrmrk(ActiveScreen).PageControl1.OnChange(self); end; acchildform2: begin ActiveScreen:=Tfrmck.Create(self); //ActiveScreen.Show ; Tfrmck(ActiveScreen).TabControl1.TabIndex := itemtag ; Tfrmck(ActiveScreen).TabControl1.OnChange(self); end; acchildform3: begin ActiveScreen:=Tfrmcx.Create(self); //ActiveScreen.Show ; Tfrmcx(ActiveScreen).PageControl1.ActivePageIndex := itemtag ; Tfrmcx(ActiveScreen).PageControl1.OnChange(self) ; end; acchildform4: begin ActiveScreen:=Tfrmprint.Create(self); //ActiveScreen.Show ; Tfrmprint(ActiveScreen).TabControl1.TabIndex := itemtag ; Tfrmprint(ActiveScreen).TabControl1.OnChange(self); end; acchildform5: begin ActiveScreen:=Tfrmyp.Create(self); //ActiveScreen.Show ; end; end; ActiveScreen.Width := screen.Width - CoolBar1.Width -8 ; ActiveScreen.Height := Image1.Height ; ActiveScreen.Top := CoolBar1.Top ; ActiveScreen.Left := 0 ; ActiveScreen.Show ; OldSender:=Sender; end;还有一些过程就不贴了领会精神,领会精神…… hwkknd(白开水)的方法不好处理,如果有100个acchildform,难道要用100个case语句吗? 年关已近,小心骗子 哥哥~~~近来抽支烟~~ TDateTimePicker时间设置问题?在线结分 动态连接库的释放问题 卡拉OK-vod点歌系统原理有谁知道? 诚恳请教 Delphi6对中文支持的两个Bug... 为何我找不到别人写的函数? :) 一个非常简陋的用windowsAPI写的窗口的窗体为什么不能刷新的?(Win2000,delphi6.0) NetAnts中的.ini在哪里,若无,那他怎么记录option信息? Toolbar问题,答对立即给分, 请问:怎么获得treeview的二级,三级的treenode的handle?
再写一个函数
function s():boolean;
begin
s:='myform';
myform:=Tmyform.create(self);
with tform(findcomopent(s))
begin
com.name:=s+inttostr(i));
com.width:=600;
....
属性赋值省了
end;
end;创建时调用比如我要创建myform1
i:=1;
s();
如果我要創建20個窗口(myform1....myform20),
哪上面的函數是不能實現的。
關鍵語句:myform:=TMyform.create(self);在函數中不好處理。
如果能寫出這樣的函數:createform(formname:string);
直接調用createform('myform1'),createform('myform2')....
createform('myform20')就能創建20個窗口就好
注:myform1...myform2是在設計狀態下已創建好的。
然後從Auto-createForms移到avilable-forms中,然後再動態創建.最後非常感謝所有參與的人。
procedure Tfrmmain.SetActiveScreen(Sender:TObject;itemtag:integer);
begin
if Assigned(ActiveScreen) then
begin
Tmenuitem(OldSender).Checked :=false;
ActiveScreen.Free ;
ActiveScreen:=nil;
end;
case ActiveScreenType of
acchildform1:
begin
ActiveScreen:=Tfrmrk.Create(self);
Tfrmrk(ActiveScreen).PageControl1.ActivePageIndex := itemtag ;
//ActiveScreen.Show ;
Tfrmrk(ActiveScreen).PageControl1.OnChange(self);
end;
acchildform2:
begin
ActiveScreen:=Tfrmck.Create(self);
//ActiveScreen.Show ;
Tfrmck(ActiveScreen).TabControl1.TabIndex := itemtag ;
Tfrmck(ActiveScreen).TabControl1.OnChange(self);
end;
acchildform3:
begin
ActiveScreen:=Tfrmcx.Create(self);
//ActiveScreen.Show ;
Tfrmcx(ActiveScreen).PageControl1.ActivePageIndex := itemtag ;
Tfrmcx(ActiveScreen).PageControl1.OnChange(self) ;
end;
acchildform4:
begin
ActiveScreen:=Tfrmprint.Create(self);
//ActiveScreen.Show ;
Tfrmprint(ActiveScreen).TabControl1.TabIndex := itemtag ;
Tfrmprint(ActiveScreen).TabControl1.OnChange(self);
end;
acchildform5:
begin
ActiveScreen:=Tfrmyp.Create(self);
//ActiveScreen.Show ; end;
end;
ActiveScreen.Width := screen.Width - CoolBar1.Width -8 ;
ActiveScreen.Height := Image1.Height ;
ActiveScreen.Top := CoolBar1.Top ;
ActiveScreen.Left := 0 ;
ActiveScreen.Show ;
OldSender:=Sender;
end;
还有一些过程就不贴了领会精神,领会精神……
语句吗?