如何在Delphi中将子菜单设置为右侧弹出?

时间:2014-11-03 11:34:05

标签: delphi-2009

我正在使用Delphi构建应用程序,并且子菜单存在问题。在以后的Windows版本(即w8和Windows Server 2012)中激活时,似乎子菜单的默认位置在左侧。我希望它们出现在右侧(默认情况下)问题可以通过Windows 8控制面板中的TabletPC设置解决。但在Windows Server 2012中没有这样的替代方案。我怎么能在Windows Server 2012中设置它还是更好,我怎么能在Delphi中以编程方式进行呢?

感谢您的期待

彼得

1 个答案:

答案 0 :(得分:0)

您需要MainMenu或PopupMenu吗?

{ for Popup menu }

procedure TForm1.FormContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
var
    LMousePosition: TPoint;
begin
    LMousePosition := ClientToScreen(MousePos);
    PopupMenu1.Popup(LMousePosition.X - 125, LMousePosition.Y);
end;

{ for Main menu }

procedure TForm1.FormCreate(Sender: TObject);
var
    LMenuItem: TMenuItemInfo;
    LMainMenu: HMENU;
  LBuffer: Array [0..79] of Char;
begin
    LMainMenu := Self.Menu.Handle;

    LMenuItem.cbSize := SizeOf(LMenuItem);
    LMenuItem.fMask := MIIM_TYPE;
  LMenuItem.dwTypeData := LBuffer;
  LMenuItem.cch := SizeOf(LBuffer);

  GetMenuItemInfo(LMainMenu, miMenuItem1.Command, False, LMenuItem);

    LMenuItem.fType := LMenuItem.fType or MFT_RIGHTJUSTIFY;
  SetMenuItemInfo(LMainMenu, miMenuItem1.Command, False, LMenuItem);
end;