AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Popupmenu TMenuItem Rechtsklick

Ein Thema von Shark99 · begonnen am 27. Jul 2015 · letzter Beitrag vom 29. Jul 2015
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 14:40
Füge mal in dem PopupMenu1Popup am Ende noch hinzu:
Delphi-Quellcode:
  TrackPopupMenuEx(PopupMenu1.Handle,
                            TPM_RECURSE or TPM_BOTTOMALIGN or TPM_RETURNCMD,
                            Mouse.CursorPos.X, Mouse.CursorPos.Y, Handle, nil);
Funktioniert auch noch nicht alles (das erste Menü reagiert nicht auf Klicks), aber mehr als vorher.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#12

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 14:51
Verstehe ehrlich gesagt den Sinn deines Codes nicht. Damit geht bei jedem Klick das Popupmenü nochmal auf, und zwar auch beim Linksklick.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 15:09
Setz mal einen Haltepunkt auf MenuRButtonUp. Da kommst du nämlich nun an. Du kannst das auch anderswo einbauen, ich wollte nur zeigen, dass du so den Rechtsklick bekommst.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#14

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 15:17
Das stimmt, allerdings bekommt man 2+ Popupmenüs angezeigt, und zwar auch beim Linksklicks.

TrackPopupMenuEx() zeigt zwangsläufig das Menü an. Man kann aber .Popup() durch TrackPopupMenuEx() nicht ersetzen, weil TrackPopupMenuEx() keine Events auslöst (kein OnPopup etc).

p.s.

Habe nun versucht WM_MENURBUTTONUP in WndProc() abzufangen und dort einen Timer für 500ms zu starten damit ich erkenne dass ein Menü-Rechsklick stattgefunden hat. Aber MENURBUTTONUP wird in WndProc nie ausgelöst. Bin langsam am verzweifeln.

Geändert von Shark99 (28. Jul 2015 um 15:26 Uhr)
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#15

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 17:30
Neue Erkentniss. WM_MENURBUTTONUP wird nicht ausgelöst, weil die Mainform nicht der Parent eines Popupmenü ist, sondern ein verstecktes Fenster. Die Message kommt statt dessen bei PopupList.WndProc() an. Dort muss man sich hooken und kann dann darauf reagieren. Leider trifft es nicht für Submenus eines Popupmenüs zu. Da wird MENURBUTTONUP nicht bei PopupList.WndProc() ausgelöst.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 19:13
Diese Unit funktioniert bei mir problemlos:
http://www.delphipages.com/forum/sho...d.php?t=180337
(einfach Rechtsklick auf das Formular)

Siehe Anhang
Angehängte Dateien
Dateityp: 7z Popupmenu Rightclick.7z (55,5 KB, 10x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#17

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 19:38
Das ist doch exakt der gleiche Code den ich im ersten Post beschrieben hab.

Er hat zwei Probleme.

1. Sobald bei einem Item Visible = False ist passt die Zuordnung nicht mehr. Das Problem habe ich behoben.
2. Es funktioniert nicht wenn das Popupmenu ein Submenü hat (im Submenü kann nichts rechtsgeklickt werden).

Geändert von Shark99 (28. Jul 2015 um 19:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 21:51


Ok, habe ich nicht mehr auf dem Schirm gehabt...
Ich habe den Code kurz korrigiert, siehe Anhang...
Nicht schön, funktioniert aber...
Angehängte Dateien
Dateityp: 7z Popupmenu Rightclick.7z (55,7 KB, 5x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#19

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 22:00
Hab dein Beispielprojekt eben getestet und es funktioniert nicht. Wenn ich im sd-Untermenü auf einen der Einträge rechtsklicke passiert nichts.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Popupmenu TMenuItem Rechtsklick

  Alt 28. Jul 2015, 22:34
Ich habe die Einträge mal richtig benannt und diesmal die Exe mit reingepackt. Nicht dass es an der Windowsversion liegt. Wenn es bei dir mit der Exe geht, muss es an Delphi 2009 liegen. Das habe ich noch in einer VM, teste ich grad.

// EDIT:
Funktioniert bei mir mit Delphi 2009 wie mit XE8 und mit XP wie mit 8.1 und 10.

// EDIT2:
Siehe:
popupmenuerechtsklick.png
Angehängte Dateien
Dateityp: 7z Popupmenu Rightclick.7z (664,0 KB, 15x aufgerufen)
Sebastian Jänicke
AppCentral

Geändert von jaenicke (28. Jul 2015 um 22:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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