动态添加的可视控件比如TButton和TMenuitem无法自动的显示成xp效果。如果使用Active:=false;Active:=true如此的强制刷
新虽然可以,但是对于TMenuitem来说经常会出现异常,有时候还有其他错误,请看如下代码
:
procedure TForm1.T1Click(Sender: TObject);//T1是Mainmenu的MenuItem
var
sub:tmenuitem;
i:integer;
begin
for i:=t1.Count-1 downto 0 do
begin
if t1.Items[i].Visible then
t1.Delete(i);
end;
sub:=tmenuitem.Create(self);
t1.Add(sub);//之所以要动态的添加子菜单项是因为有特殊的需要,比如在弹出子菜单的时候列出当前目录中的文件。(文件个数是不断变化的)
sub.Caption:='test';
xpmenu1.Active:=false;
xpmenu1.Active:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
var
hiddensub:tmenuitem;
begin
T1.caption:='T';
sss1.caption:='sss'; hiddensub:=tmenuitem.Create(self);
hiddensub.Visible:=false;
sss1.add(hiddensub); hiddensub:=tmenuitem.Create(self);
hiddensub.Visible:=false;
t1.Add(hiddensub);
{添加一个不可见子菜单,为的是在T1和sss1被显示出来的时候始终有子菜单的小三角箭头,以便鼠标移动道上面的时候触发T1Click事件。}
end;procedure TForm1.sss1Click(Sender: TObject);//sss1是Popupmenu的Item
var
sub:tmenuitem;
i:integer;
begin
for i:=sss1.Count-1 downto 0 do
begin
if sss1.Items[i].Visible then
sss1.Delete(i);
end;
sub:=tmenuitem.Create(self);
sss1.Add(sub);//之所以要动态的添加子菜单项是因为有特殊的需要,比如在弹出子菜单的时候列出当前目录中的文件。(文件个数是不断变化的)
sub.Caption:='PopupMenuItem';
xpmenu1.Active:=false;
xpmenu1.Active:=true;
end;
////////////////////////////////////////////////////
问题在于:
如果T1是tPopupmenu的项目,有时候会在xpmenu.pas单元的“procedure TControlSubClass.
ControlSubClass(var Message: TMessage);”方法的“ if (not XPMenu.FActive) then”
这行出现异常;如果T1是tMainMenu的项目,那么T1的caption会成空或者缩短很多。并且永远不能弹出子菜单,总是在闪动。我在几乎见过的很多版本中都遇到这样的问题,哪位知道怎样解决?
新虽然可以,但是对于TMenuitem来说经常会出现异常,有时候还有其他错误,请看如下代码
:
procedure TForm1.T1Click(Sender: TObject);//T1是Mainmenu的MenuItem
var
sub:tmenuitem;
i:integer;
begin
for i:=t1.Count-1 downto 0 do
begin
if t1.Items[i].Visible then
t1.Delete(i);
end;
sub:=tmenuitem.Create(self);
t1.Add(sub);//之所以要动态的添加子菜单项是因为有特殊的需要,比如在弹出子菜单的时候列出当前目录中的文件。(文件个数是不断变化的)
sub.Caption:='test';
xpmenu1.Active:=false;
xpmenu1.Active:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
var
hiddensub:tmenuitem;
begin
T1.caption:='T';
sss1.caption:='sss'; hiddensub:=tmenuitem.Create(self);
hiddensub.Visible:=false;
sss1.add(hiddensub); hiddensub:=tmenuitem.Create(self);
hiddensub.Visible:=false;
t1.Add(hiddensub);
{添加一个不可见子菜单,为的是在T1和sss1被显示出来的时候始终有子菜单的小三角箭头,以便鼠标移动道上面的时候触发T1Click事件。}
end;procedure TForm1.sss1Click(Sender: TObject);//sss1是Popupmenu的Item
var
sub:tmenuitem;
i:integer;
begin
for i:=sss1.Count-1 downto 0 do
begin
if sss1.Items[i].Visible then
sss1.Delete(i);
end;
sub:=tmenuitem.Create(self);
sss1.Add(sub);//之所以要动态的添加子菜单项是因为有特殊的需要,比如在弹出子菜单的时候列出当前目录中的文件。(文件个数是不断变化的)
sub.Caption:='PopupMenuItem';
xpmenu1.Active:=false;
xpmenu1.Active:=true;
end;
////////////////////////////////////////////////////
问题在于:
如果T1是tPopupmenu的项目,有时候会在xpmenu.pas单元的“procedure TControlSubClass.
ControlSubClass(var Message: TMessage);”方法的“ if (not XPMenu.FActive) then”
这行出现异常;如果T1是tMainMenu的项目,那么T1的caption会成空或者缩短很多。并且永远不能弹出子菜单,总是在闪动。我在几乎见过的很多版本中都遇到这样的问题,哪位知道怎样解决?
解决方案 »
- 谁购买过ehlib、vclskin控件,价格分别是多少,是不是购买一套控件可以在自己的多个(N个)软件中使用?
- 关于clientDataSet一个奇怪的问题?请大家帮看看!
- 这段话什么意思
- 在汇编中如何调用Pos函数,在CPC窗口中是call @WStrPos,但我这么写会报错
- 急,80分送各位前辈:动态创建的serversocket怎么接受clientsocket的连接
- adotable+dbgrid想实现这个功能?
- ADOQuery的问题求解.
- 迷惑!
- 一个表中有一个字段为图像字段,可以为空,如何向该字段添加纪录,即添加一个图像???
- 有实现将BMP图像拉伸和收缩的函数,可以直接用吗? 没有的话,是否有可以实现这个功能的思路啊!希望大家挽救这个正在奋斗的程序员
- 我做MIDAS程序时 客户端出现Exception EIntfCastError错误
- 我想写一个类从TcustomControl派生加上Color属性怎么写!
BUG多多!!!!!!!!!!!
xpmenu的机制是在创建的时候寻找所有已经存在的他支持的控件,
然后重画他们,
你动态生成的东西它怎么找得到。解决办法你让xpmenu那个话的函数重新话一下,要不只能重写xpmenu的机制
不是找控件而是截获消息。这样才有可能
不知行不行