菜单向上弹出(20分)

  • 主题发起人 主题发起人 xlf
  • 开始时间 开始时间
X

xlf

Unregistered / Unconfirmed
GUEST, unregistred user!
我想作一个程序,使菜单(MainMenu或PopupMenu)像开始菜单一样向上弹出,我记得以前
曾讨论过,但找不到了!
 
PopupMenu1.Popup (left+5,top+height-46-popupmenu1.Images.Height*popupmenu1.Items.Count);
 
我试了不行的说
 
PopupMenu1.Popup(x+left,y+50*popupmenu1.Items.Count);

这个简单而且更象,不行你再试试改 Popup的参数
 
向下的位置不能完全显示菜单项时,菜单就自己向上弹出来了。
PopupMenu的MainAnimation设置为maTopToBottom
 
我说的是菜单向上弹出,就像开始菜单一样,菜单底部与左部在button的顶部与左部
 
应该可以找到相近的控件
 
自己控制菜单弹出的恐怕难度较大。其实“开始”按钮也不是这样做的,它只是控制了
菜单弹出的位置而已,而菜单如何弹出根本不必去管,把任务栏拖放到屏幕四周就知道
了。下面是向上弹出的例子,注意PopupMenu的MainAnimation设置为maTopToBottom,
按钮位置在靠近屏幕下端附近,Button1为TSpeedButton,AllowAllUp设为True,
GroupIndex设为1。
procedure TForm1.Button1Click(Sender: TObject);
var
Pos: TPoint;
begin
if Button1.tag=0 then
begin
Pos :=Button1.ClientToScreen(Point(0,0));
Button1.Down :=true;
p1.Popup(Pos.x, Pos.y);
Button1.tag :=1;
end
else
begin
Button1.Down :=false;
Button1.tag :=0;
end;
end;
 
wjiachun的办法可行
PopupMenu1.Popup (left+5,top+height-46-popupmenu1.Images.Height*popupmenu1.Items.Count);
popupmenu1.Images里要有图像
 
设置screen.menu下的某个属性就可以了。
以前做过,忘记了。手头上又没有DELPHI。
你试试。
 
我试了给提供的所有办法,没解决!还有别的办法吗?
 
To songhb
  为什么popupmenu1.Images里要有图像?
To xlf
  我的方法可以啊,我就是这样做的。
 
to CathyEagle:
如果不拉到屏幕下端,它就又显示到上下面了,我要的是不管在哪都能同下到上显示,
能做到吗?
 
To xlf:
  在Windows中,我们所能获得的对菜单的控制实在太少了,菜单的行为是由系统来
决定的,Windows98提供了菜单动画,我们就有菜单动画,Window2000提供了菜单上放
开右键的消息,我们才能对菜单项编程,除非你是用CoolMenu那样的完全自己实现的
菜单,否则没有办法控制它。
  在D5中,也只增加了菜单的动画选择,即它是如何弹出来的,但是如果弹出菜单
的位置以下的空间足够显示完整的菜单,那不管它出现的动画效果是怎样的,也只能
显示在下面。
  把PopupMenu的MainAnimation设置为maBottomToTop,可以使菜单自下而上地弹出,
不管在什么位置,但入上面所说,如果弹出菜单的位置以下的空间足够显示完整的菜
单,那它还是只能显示在下面。
 
谢谢 CathyEagle!
 
后退
顶部