Delphi-PRAXiS
Seite 2 von 2     12   

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 Dialog (TForm) soll PopUp-Menu nachahmen (https://www.delphipraxis.net/119807-dialog-tform-soll-popup-menu-nachahmen.html)

Jelly 1. Sep 2008 19:20

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Zitat:

Zitat von Andreas Leix
Der Witz ist aber, dass mein erweitertes PopUp-Menü - sei es nun durch ein Form oder einen Frame realisiert -
modal angezeigt werden muss.

Wo ist denn da der Witz. Du blendest das Frame ein bzw. aus. Ins Frame kannst du legen was du willst. Analoges erreichst du wenn du deine Controls in ein Panel packst, nur dass ein Frame halt objektorientierter ist.


Zitat:

Zitat von Andreas Leix
Hat ein Frame überhaupt eine ShowModal-Routine?

Das hab ich nie gesagt, sondern nur, dass du das Frame über die Visible Eigenschaft beliebig ein- und ausblenden kannst.

Andreas Leix 2. Sep 2008 07:27

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Die Geschichte mit ein/ausblenden ist schon ok.
Ich will wie gesagt ein Popup-Menü simulieren, in dem anderere Items drin sind, als nur typische Menü-Punkte.
Bei einem PopUp-Menü ist es ja so, dass sobald es aufpoppt, man sonst nichts vom Programm bedienen kann,
ausser eben Punkte aus dem Popup-Menü anzuklicken. In diesem Sinne ist es ein modales Fenster und auch genau das
was ich brauche.
Eine Besonderheit hat ein Popup aber: Klickt man irgendwo ausserhalb, dann geht es zu.

Um zu erreichen, dass man während mein Pseudo-Popup sichtbar ist, nichts anderes im Programm
anklicken kann, zeige ich es mit ShowModal an. Damit erreiche ich genau das Gewünschte.

Jetzt fehlt mir nur diese eine Besonderheit eines Popups: Ausserhalb klick --> Popup geht zu.


Gruß Andreas

DeddyH 2. Sep 2008 07:34

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Und wenn Du auf WM_KILLFOCUS reagierst?

[edit] Geht aber nicht bei modalen Fenstern. [/edit]

SirThornberry 2. Sep 2008 07:38

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Wie bereits gesagt solltest du es schließen wenn dein Menü den Focus verliert. Dies passiert zum Beispiel wenn jemand ein anderes Programm auswählt etc.
Wenn du dich für ShowModal entscheidest hast du dich ja bewusst dafür entschieden das der Rest deiner Formulare nicht bedienbar ist, entsprechend können diese natürlich auch nicht den Focus bekommen.
Ich wüsste übrigens keinen Grund warum ein Popupmenü Modal angezeigt werden muss. Das ist auch nicht bei TPopupMenü so.

Ich finde deine Aussage widerspricht sich einfach ein wenig. Du willst das dein Menü zu geht wenn du eines deiner anderen Forms auswählst, willst aber nicht das man diese auswählen kann (deswegen nimmst du ja ShowModal)

In wie weit ein Frame hier helfen soll ist mir nicht klar. Ob ich nun die Dinge direkt auf dem Formular plaziere oder auf einem Frame welcher dann auf dem Formular plaziert hat den gleichen Effekt bezüglich Anzeige und Verhalten.

teebee 2. Sep 2008 07:47

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Zitat:

Zitat von Andreas Leix
Bei einem PopUp-Menü ist es ja so, dass sobald es aufpoppt, man sonst nichts vom Programm bedienen kann,
ausser eben Punkte aus dem Popup-Menü anzuklicken.

Dieses Verhalten kann ich nicht nachvollziehen. Ein Programm bleibt immer normal bedienbar, auch wenn ein PopUp offen ist. Bei einem Klick auf ein anderes Control verschwindet das PopUp und das Control reagiert auf den Klick. Von daher sehe ich auch keine Notwendigkeit für ein modales Fenster.
Welche Anwendung verhält sich denn so wie von Dir beschrieben?

alzaimar 2. Sep 2008 07:48

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Ich würde das einfach über den WindowsStyle 'WS_POPUP' regeln:

DeddyH 2. Sep 2008 07:49

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Ich persönlich würde mich auch "bedanken", wenn ein PopupMenu modal wäre. Versehentlich die rechte Maustaste geklickt und man müsste einen Funktion des Menüs ausführen, auch wenn man das gar nicht will.

Jelly 2. Sep 2008 08:21

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Zitat:

Zitat von Andreas Leix
Bei einem PopUp-Menü ist es ja so, dass sobald es aufpoppt, man sonst nichts vom Programm bedienen kann, ausser eben Punkte aus dem Popup-Menü anzuklicken.

Das stimmt so nicht. Wenn ich ein normales Popup Menu geöffnet habe, und klicke dann z.B. auch eine Checkbox auf der Form, dann wird dieser Click schon registriert: Die Checkbox ist gesetzt, erhält den Fokus und das Popupmenu schliesst... daran ist nur wirklich nix modal.


Zitat:

Zitat von SirThornberry
In wie weit ein Frame hier helfen soll ist mir nicht klar. Ob ich nun die Dinge direkt auf dem Formular plaziere oder auf einem Frame welcher dann auf dem Formular plaziert hat den gleichen Effekt bezüglich Anzeige und Verhalten.

Das stimmt. Ich nannte ja auch bereits noch ein Panel als Alternative, das ein- und ausgeblendet wird. Frames verhalten sich in dem Sinne ja gleich. Finde nur der objektorientierte Ansatz etwas besser, z.B. wenn das Menü an einer anderen Programmstelle auch eingeblendet werden soll. Ist aber Geschmackssache.

alias5000 2. Sep 2008 10:58

Re: Dialog (TForm) soll PopUp-Menu nachahmen
 
Zusammenfassung:
Fenster nicht modal machen und wenns den Fokus verliert, schließen. Oder?

Gruß
alias5000


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Seite 2 von 2     12   

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