在使用PopupMenu过程中,应该有很多朋友在使用 PopupMenu弹出菜单时有这样一个想法,比如我要让我的PopupMenu像Window系统的“开始”向上显示。可能有很多朋友在这一方面遇到难题了。也许也有些朋友通过PopupMenu 的.Popup(x,y)来设计向个弹出,但用过这个功能时会感到不满意的。经过本的仔细摸索终于搞定了解决这个问题的方法, 以下是代码实现部分,有两种方法可以实现:
方法一:
procedure TForm1.Button2Click(Sender: TObject);
var
pc :TPoint;
begin
SetForegroundWindow(Handle) ;
pc :=Button2.ClientToScreen(Point(0, 0)) ;
TrackPopupMenu(PopupMenu1.Handle,TPM_BOTTOMALIGN,pc.X, pc.Y,0,Handle,nil);
PostMessage(Handle, WM_NULL, 0, 0);
end;
方法二:
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Pp: PTPMParams;
pc :TPoint;
begin
SetForegroundWindow(Handle) ;
pc :=Button1.ClientToScreen(Point(0, 0)) ;
GetMem(Pp, sizeof(TTPMParams));
Pp^.cbSize := sizeof(TTPMParams);
Pp^.rcExclude := Rect(pc.X, pc.Y,
Screen.Width ,Screen.Height);
TrackPopupMenuEx(PopupMenu1.Handle,TPM_BOTTOMALIGN, pc.X,
pc.Y, Handle, Pp);
FreeMem(Pp);
PostMessage(Handle, WM_NULL, 0, 0);
end;
以上是两种方法的实现部分,如有什么问题或更好的办法可以联系我jzymail2008@163.com 或直接在此留言。
对此相关的msdn信息为: