将ActiveForm中的菜单放到别处(MM另加200分)(300分)

  • 主题发起人 主题发起人 AoRoA
  • 开始时间 开始时间
A

AoRoA

Unregistered / Unconfirmed
GUEST, unregistred user!
将ActiveForm中的菜单放到别处,
仍需响应原来的事件;
Thanks !
AoRoA@netease.com
 
你想放在哪儿?

BTW:MM的亲GG加不加200分?:-)
 
o*o你是AoRoA的gg?
 
你想放哪儿
 

OleContainer1.CreateObject('ActiveProj1.ActiveFrm1X');
如果 OleContainer1.OleObject 提供了一个Menu(TMainMenu) or @Menu
将此Menu显示到MainForm上(OleContainer1.Parent);
我能将其移出,但是响应事件时出错;
Thanks !
 
不知你移出menu采用什么方法,Removecontrol???
 
移出menu的方法有好多
1 SetMenu() //不能响应事件
2 InserMenu() //
3 改变Menu.Items.Parent ;(需改VCL) //响应事件时出错

注:
OleContainer1.OleObject 也可提供别的;
 
此方法在同一个程序的两个Form 间移动mainmenu1,测试成功。

var
m:TMainMenu;

m:=MainMenu1;
Form1.RemoveComponent(MainMenu1);
Form2.InsertComponent(m);
form2.show;
 
不是TForm , 而是TActiveForm;
Thanks !
 
我知道,试一试,看看行不行?(用同样的原理)
 
不是TForm , 而是TActiveForm;
Thanks !
 
移出来好象是不行,因为访问ActiveForm都是通过interface访问的.不过我有办法
将实现你的功能.如你需要,可以写出原代码,不过,这点分数太.....
 
这么早?
谢啦 !
 
HaHa.....300分归我. {B-)))

刚发现一个特别简单的方法:
MainForm.Menu:=TMainMenu(ActiveForm.Menu);

注意:
在ActiveForm中:Menu输出采用Menu:integer属性的Get_Menu中:Result:=Integer(Menu1);

 
响应事件时出错;
程序结束时出错;
假如你改变Menu.Items.Parent ;(需改VCL)
那么程序结束时就不会出错了;(我以前好象说过这种方法)
Thanks !
 
试试我的示例,已经邮给你!

》OleContainer1.CreateObject('ActiveProj1.ActiveFrm1X');
是不是该是
OleContainer1.CreateObject('ActiveProj1.ActiveFrm1X',False);



 
你邮过来吧
上面的注释我的确少写了一个'False'; Sorry、
但是我的程序却没有少写。
Thanks !
 
我在写上面的帖子的时候就已经邮给你了,如果没收到,晚上再寄,因为程序在寝室
的计算机中!
 
To AoRoA:
你换台计算机试试,因为你的VCL已经被你改动了!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
930
DelphiTeacher的专栏
D
D
回复
0
查看
871
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部