ActiveForm大送分(150分)

  • 主题发起人 主题发起人 robinswp
  • 开始时间 开始时间
R

robinswp

Unregistered / Unconfirmed
GUEST, unregistred user!
1.我用D4把原来的客户端程序转换到ActiveForm上,发现无法生成一个新Form.
我的程序如下:
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
end;
一按Button2就出错.
2.转换后,主菜单找不到.
3.转换后,Form能否改变自由改变大小?
 
1.activeform不是一般的application,没有自动application.createform;
你必须自己创建窗口,才能调用

例如:form1.oncreate中 form2:=tform2.create;
然后: procedure TForm1.Button2Click(Sender: TObject)
begin Form2.Show;
end

最后 form1.ondestroy中 form2.free;

不过,activeform中 show form是会显示在browser外面的,不安全,
也很不协调,一般都是用pagecontrol实现"多窗口"。

2.activeform 不能有main menu
3.不可以吧!
 
to 温柔一刀:
谢谢你,第一个问题我已解决了,但我想问要实现"多窗口",有没有其它的方法?
关于第二个问题,有没有其它方法来替代?
 
1.有一个比较好的办法,既实现真正的多窗口,又不必让窗口"跳"到外面来,
那就是修改form的parent,利用pagecontrol作载体:

procedure TTestATX.ActiveFormCreate(Sender: TObject);
begin
pagecontrol1.Align:=alClient;
form1:=tform1.create(self);
form1.BorderStyle:=bsnone;
form1.parent:=tabsheet1;
tabsheet1.TabVisible:=False;
form1.left:=0;
form1.Top:=0;
form1.show;
end
//这些代码可以动态调用,实现交互。

无论多少个窗口,只需用相应的tabsheet。这样,activeform纯粹变成一个载体,
你以前所作窗口(非active form)都可以照样使用,只是注意一些窗口事件的写法(onshow等)。

2.如果一定要用menu,只有让窗口"跳"出来了,因为你可以试验,
上面那种方法已经保留了窗口内容,但菜单还是没了,可见不能有menu是IE的限制。

3.用这种方法,form的size也可以"变"了,只是变不出"如来佛的手掌心",
没什么意义了。
 
再问一个问题:
我试了一下用子父窗体的方法,一运行就报错,我早不出原因.请问这种方法可行不?
 
>>"子父窗体的方法"
指的什么方法?
 
to 温柔一刀:
把最后一个问题解决了,150大洋就归你了.
 
我想ActiveX中使用MDI可能是不行的,
MDI是一套很麻烦的机制,其实不好用。
(可不是为了回答这个问题才得出的结论,
你可以广泛查询一些有关MDI的论述)

如果你想实现父子窗口,可用上面提到的
parent的方法,然后建立并管理窗口数组。
 
可以用多个页面来解决这个问题
用一个TPagecontrol,生成多个Ttabsheet,用的时候切换不就可以了。
 
看来我只好奉上150大洋了(这可是我的老本哪).
温柔一刀,本来这150大洋全归你的,但www来了,那就"见者有份".分50给她吧,想你没有意见吧?!
 
多人接受答案了。
 
有意见...
 
有意见也没办法了,下回补上吧!
好孩子,别哭!叔叔给你吃糖.
 

Similar threads

D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部