Autor Beitrag
LonghornUser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Do 12.03.09 12:34 
Hallo,

ich möchte folgendes bewerkstelligen:
Ich habe hier ein Label und auf Linksklick soll ein Popupmenu geöffnet werden. Allerdings an der Stelle, wo es normalerweise in einem MainMenu geöffnet würde. Sprich: Ich will ein eigenes Mainmenü basteln.
Nun habe ich es so versucht:
ausblenden Delphi-Quelltext
1:
2:
3:
Label5OnClick:
popupmenu1.Popup(form1.Left+label5.Left,
  form1.Top+label5.Top+label5.Height);

Das funktioniert aber leider nicht ganz, weil Form1.Top mir die Position des Fensters bis zur Rahmengrenze liefert. Nun ist die Titelleiste in Vista ja höher als in XP und ich glaube, in Vista kann man die Höhe sogar verstellen. Das bedeutet, absolute Angaben helfen nicht weiter.

Habt ihr eine Idee, wie ich diesem Problem begegnen könnte ?

Ciao LHUser
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 12.03.09 12:47 
Wie wäre es mit ClientToScreen? ;-)

user profile iconLonghornUser hat folgendes geschrieben Zum zitierten Posting springen:
Sprich: Ich will ein eigenes Mainmenü basteln.
Was hat das eigentlich für einen Sinn, wenn ich fragen darf? :gruebel:
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 12.03.09 12:54 
Sinn hin oder her, wenn ich bei Click auf etwas ein Popup-Menü haben möchte, dann mache ich das so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
var point: TPoint;
//...
  GetCursorPos(Point);
  MyPopupMenu.Popup(Point.X, Point.Y);
Gibt natürlich nicht den gewünschten Effekt, wenn man den Button per [Enter] bedient. ;-)

Ansonsten sollte ClientToScreen auch weiterhelfen.

_________________
We are, we were and will not be.
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Do 12.03.09 14:13 
ClientToScreen hat das gewünschte Ergebnis gebracht. Danke für den Tipp.

Zum Sinn des ganzen: Heutige Anwendungen haben ja schon den Anspruch, auch grafisch was herzumachen. Und da passt das MainMenu nicht wirklich rein. Daher das ganze und ich tausche ja nur die MenuBar aus, also nicht das eigentliche Menü.

Was mir aber nun auffällt. Wenn man versucht, das Verhalten von MainMenu nachzuahmen, muss es ja auch gehen, dass, wenn man ein Menü offen hat und mit der Maus auf den benachbarten Eintrag in der MainMenuBar fährt, sich dann das Popupmenü des benachbarten Eintrages öffnet und das des ersten Eintrages wieder schließt.

Gibt es im Popupmenu eine Methode zum Schließen (habe nix gefunden) ? Ich würde das Objekt ungern zerstören o.ä. ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 12.03.09 16:39 
Die diversen Menükomponenten wie XPMenu usw. gefallen dir nicht? Denn ein so gutes Aussehen wie solche Komponenten wird dir mit deiner Methode kaum gelingen.

user profile iconLonghornUser hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es im Popupmenu eine Methode zum Schließen (habe nix gefunden) ? Ich würde das Objekt ungern zerstören o.ä. ;)

www.swissdelphicente...showcode.php?id=2262
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Do 12.03.09 17:19 
Naja, es geht nicht um "gefallen", sondern um "passen". Wenn man eine Anwendung in grün hat, passt ein blaues MainMenü halt nicht ;)

Der Code, den es bei SwissDelphiCenter gibt, funzt zwar, jedoch nicht in meinem fall. Es schein so, als ob keine Move-Events mehr erkannt werden, wenn ein Popupmenu offen ist.
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Fr 13.03.09 16:54 
Keine Idee ? :(