Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TPopupMenu.CloseMenu funktioniert nicht (https://www.delphipraxis.net/169703-tpopupmenu-closemenu-funktioniert-nicht.html)

tofse 6. Aug 2012 14:18

TPopupMenu.CloseMenu funktioniert nicht
 
Hallo,
ich habe in meinem Programm zwei Menüs TPopupActionBar.
Diese sollte in manchen Situationen vom Programm geschlossen werden.
Dazu verwende ich
Code:
PopUpActionBarTermin.CloseMenu;
Leider hat das gar keinen Effekt. Selbst wenn ich mit einem Haltepunkt an die Stelle im Quelltext springe, bleibt das Menü offen und legt sich sogar über die Entwicklungsumgebung, die ja dann gerade offen. Was ich damit sagen will: das Programm kommt auf jeden Fall an die Stelle, wo das Menü geschlossen werden soll, es passiert nur nichts.

Woran kann das liegen?
Eigentlich kann man ja lt. Hilfe nichts falsch machen.
Zitat:

Schließt das Popup-Menü auf dem Bildschirm.

Rufen Sie CloseMenu auf, um das Popup-Menü zu schließen.

Grüße
Christof

Uwe Raabe 6. Aug 2012 15:51

AW: TPopupMenu.CloseMenu funktioniert nicht
 
Der PopupActionBar ist nicht das tatsächlich instanziierte PopupMenu. Du musst
Delphi-Quellcode:
PopUpActionBarTermin.PopupMenu.CloseMenu;
aufrufen.

tofse 7. Aug 2012 06:31

AW: TPopupMenu.CloseMenu funktioniert nicht
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1177103)
Du musst
Delphi-Quellcode:
PopUpActionBarTermin.PopupMenu.CloseMenu;
aufrufen.

Dann erhalte ich leider eine Zugriffsverletzung

Was ich nicht verstehe. In der Hilfe steht
Zitat:

TPopupActionBar ist eine Unterklasse von TPopupMenu.
Also müsste
Delphi-Quellcode:
TPopupActionBar.CloseMenu;
doch auch funktionieren.

Edit:
So, nun habe ich zum Testen mal ein TPopupMenu eingebunden.
Rufe ich da
Delphi-Quellcode:
PopupMenuZoom.CloseMenu;
auf, funktioniert es. Ich verstehe es aber nicht.

Uwe Raabe 7. Aug 2012 07:53

AW: TPopupMenu.CloseMenu funktioniert nicht
 
Wie ich bereits sagte:
Zitat:

Der PopupActionBar ist nicht das tatsächlich instanziierte PopupMenu.
Das tatsächlich sichtbare Menü wird dynamisch erzeugt und ist über das Property PopupMenu erreichbar - natürlich nur, wenn es auch gerade existiert. Da ich aber nicht weiß, wo und wie du das CloseMenu aufrufen willst, ist das so etwas schwer zu analysieren.

tofse 7. Aug 2012 08:06

Gelöst: TPopupMenu.CloseMenu funktioniert nicht
 
:oops:
Zitat:

Zitat von Uwe Raabe (Beitrag 1177149)
Das tatsächlich sichtbare Menü wird dynamisch erzeugt

Dieser nochmals explizite Hinweis auf dynamisch hat mich nun auf die Fährte gebracht. Eigentlich blöd...wie geschrieben habe ich ja 2 Menüs.
Da habe ich nacheinander wie von dir erklärt das CloseMenu aufgerufen. Zum Testen kann ich ja aber immer nur ein Menü einblenden, beim anderen gabs dann die Zugriffsverletzung. Ist mir im Detail nicht aufgefallen. Dass es dynamisch erzeugt wird, war mir nicht klar.

Jetzt klappt's, wieder was gelernt :thumb:

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 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