2014-11-03 21 views
0

저는 Delphi에서 응용 프로그램을 만들고 하위 메뉴에 문제가 있습니다. 하위 메뉴의 기본 위치는 나중에 Windows 버전 (예 : w8 및 Windows Server 2012)에서 활성화 될 때 왼쪽에있는 것으로 보입니다. 나는 그것들을 오른쪽에 나타 내기를 원한다. (기본적으로) 윈도우 8의 제어판에서 TabletPC를위한 설정에서 문제를 해결할 수있다. 그러나 Windows Server 2012에는 그러한 대안이 없다. Windows Server 2012에서 어떻게 설정할 수 있습니까? 아니면 Delphi에서 프로그래밍 방식으로 어떻게 할 수 있습니까? 기대에어떻게하면 델파이의 오른쪽에 팝업 메뉴로 서브 메뉴를 설정할 수 있습니까?

덕분에 당신은 MAINMENU 또는 PopupMenu를 위해 필요한

피터

+0

당신은 그걸 통제 할 권한이 없습니다. 메뉴 동작은 VCL이 아닌 OS에 의해 제어됩니다. 운영 체제는 메뉴가 표시되는 위치와 방법을 결정합니다. –

+0

MainMenu 또는 PopupMenu가 필요합니까? – Zam

답변

0

가 있습니까?

{ 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;