Einzelnen Beitrag anzeigen

Glados
(Gast)

n/a Beiträge
 
#17

AW: TPopupMenu Popup überschreiben / DoPopup wird nie aufgerufen

  Alt 21. Okt 2017, 14:18
Ich werde mir das gleich mal genau angucken.
Ein Problem habe ich jedenfalls schon gefunden.

Ich verwende ein ListView. Beim Selektieren eines Items wird Prozedur X aufgerufen. Diese prüft gewisse Dinge und passt das dementsprechend eine Toolbar an.

Nun aber das Problem.
das Popup-Event meines PopupMenus ruft diese Prozedur auch auf. In der Reihenfolge kommt aber zuerst ListView > OnSelectItem.
Das heißt hier wird Prozedur X zweimal aufgerufen denn OnSelectItem.

In Prozedur X prüfe ich außerdem, welches PopupMenu gerade geöffnet ist, um unnötigen Code nicht erst auszuführen.
Durch dieses Reihenfolgen-Problem wird X aber zweimal aufgerufen.

Wenn ich in OnSelectItem also herausfinden könnte, ob es einen Rechtsklick der Maus gab bzw ob der Windows-Kontextmenu-Knopf (VK_APPS) gedrückt wurde, könnte ich das verhindern.
Aber wie kommt man in OnSelectItem an diese Infos?
OnMouseDown ist schon zu spät. Das wird erst nach OnSelectItem ausgeführt.

Ich hatte gerade ganz grob das hier im Kopf:
if (GetAsyncKeyState(VK_RBUTTON) = 0) and (GetAsyncKeyState(VK_APPS) = 0) then Was mir auch bei einem anderen Problem helfen würde, wäre wenn ich das MenuClose von PopupMenu überschreiben könnte. Aber das darf man scheinbar nicht.

Geändert von Glados (21. Okt 2017 um 14:33 Uhr)
  Mit Zitat antworten Zitat