Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Untermenü per Programm aufrufen (https://www.delphipraxis.net/80736-untermenue-per-programm-aufrufen.html)

Antigonos 14. Nov 2006 14:36


Untermenü per Programm aufrufen
 
Hallo,

gibt es eine Möglichkeit ein Untermenü mit mehreren Einträgen aus dem Programm heraus aufklappen zu lassen. Mit der Maus ist das ja kein Thema, aber ich finde keine Möglichkeit das übers Programm hinzukriegen.
Hintergrund ist, dass ich ein Untermenü alternativ über einen Hotkey aufklappen möchte. Das Click-Event ist dafür untauglich weil es nur die Zeilen in OnClick ausführt.

Alternativ kann ich natürlich ein Popup-Menu erzeugen und dieses anzeigen, ist aber nicht so elegant und einfach.

JonnyGuitar 14. Nov 2006 15:31

Re: Untermenü per Programm aufrufen
 
hi,
könntest du dein problem etwas näher erläutern, ich verstehe nicht genau was du meinst.


mfg Jonny

_frank_ 15. Nov 2006 00:55

Re: Untermenü per Programm aufrufen
 
meinst du beim TPopupmenu? wenn ja dann TPopupmenu.Popup(x,y)

Gruß Frank

Antigonos 15. Nov 2006 09:18

Re: Untermenü per Programm aufrufen
 
Ganz einfach ausgedrückt: Du kennst das typische Hauptmenü mit Datei, Bearbeiten, Fenster .... Jedes dieser Menüpunke hat Untermenüs. Unter Datei steht i.d.R. "Neu", "Ändern" und "Löschen". Ein Klick mit der Maus auf "Datei" klappt das Untermenü auf. Nun möchte ich aber dieses Untermenü per Hotkey aufklappen lassen. Wie lässt sich also der Mausklick simulieren. Mit der Methode "Click" des Menuitems klappt es leider nicht :(

_frank_ 15. Nov 2006 09:58

Re: Untermenü per Programm aufrufen
 
wenn du dem Menüpunkt ein Alt-Kürzel (Unterstrichener Buchstabe, Accelerator, kA wie man das genau nennt, Caption mit & vor dem jeweiligen Buchstaben) gönnst kannst du das so realisieren:

Delphi-Quellcode:
datei1.caption='&datei';

procedure TForm1.Button1Click(Sender: TObject);
const VK_D=$44;//kannst du evtl weglassen
begin
  keybd_event(VK_MENU, 0, 0, 0);
  keybd_event(VK_D, 0, 0, 0);
  keybd_event(VK_D, 0, KEYEVENTF_KEYUP, 0);
  keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
end;
Gruß Frank

Antigonos 15. Nov 2006 13:32

Re: Untermenü per Programm aufrufen
 
Hallo Frank,

wie sieht denn die Prozedur keybd_event aus? Wie dem auch sei, ich hab mich leider nicht korrekt ausgedrückt. Mein Problem beschränkt sich auf die Toolbar2000 von Jordan Russell, die ähnliche Funktionen wie ein Windows-Menü hat, u.a. auch sogenannte SubMenuItems mit Untermenüs.

Klickt man auf einen solches SubMenuItem, klappt darunter ein Menü mit weiteren Items auf. Nun möchte ich, dass der Benutzer solche Menüs auch per Hotkey öffnen kann. Bei einem gewöhnlichen Menü drückt man einfach Alt + "Accelerator-Taste". Bei einem Toolbutton gibts aber keinen solchen. Die Click-Routine des Toolbuttons öffnet leider nicht das Untermenü :(

Gruß Wilfried!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz