AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Modales Fenster per Klick auf aufrufende Form schließen lassen

Modales Fenster per Klick auf aufrufende Form schließen lassen

Ein Thema von Hobbycoder · begonnen am 12. Okt 2018 · letzter Beitrag vom 12. Okt 2018
Antwort Antwort
Seite 1 von 2  1 2   
Hobbycoder

Registriert seit: 22. Feb 2017
592 Beiträge
 
#1

Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 08:10
Hi,

ich möchte folgendes erreichen: Eine Methode ruft eine modale Form auf. Diese wird dann mittig über der aufrufenden Form dargestellt. Innerhalb dieser modalen Form hab ich ja genug Möglichkeiten diese zu schließen. Sie soll aber auch geschlossen werden, wenn der Benutzer auf die im Hintergrund liegende Form klickt (Nicht wenn er auf eine andere Anwendung oder den Desktop klickt, sondern nur die aufrufende Form).

Wäre das möglich? Wenn ja wie?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
38.824 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 08:13
Dann wäre es ja keine modale Form ...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
638 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 08:30
Auch wenn das, wie Markus schon sagt, dem Prinzip der modalen Form etwas zuwiderläuft, könntest Du die X- und Y-Werte des Mausklicks erfassen und feststellen ob sie

a) außerhalb der modalen Form
b) aber innerhalb der X- und Y-Werte Deiner Hauptform liegen.

Aber persönlich halte ich es für besser, eine modale Form durch eine Aktion innerhalb dieser Form zu schließen.


Gruß
Frank
'Cause life is a lesson, you'll learn it when you're through

Geändert von FBrust (12. Okt 2018 um 08:31 Uhr) Grund: Grammatik....
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.077 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 08:37
Vorschlag: Keine eigene Form verwenden, sondern ein Panel auf einem durchsichtigem Panel in Applikationsgröße plazieren. Klicks auf dieses Panel können problemlos erkannt und ausgewertet werden. Einzig das verschieben des "Fenstres" ist dann nicht mehr so ganz einfach....aber machbar.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
136 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 11:02
Vorschlag: Keine eigene Form verwenden, sondern ein Panel auf einem durchsichtigem Panel in Applikationsgröße plazieren.
Gibts ne einfache Methode, ein Panel durchsichtig zu machen, oder braucht man dazu extra (Kauf-)Komponenten?
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
235 Beiträge
 
#6

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 11:22
Die Idee mit dem Panel-Gefrickel erinnert mich an dubiose Software ala Registry-Cleaner und Konsorten im pseudo-professionellen Stil.

ich würde einfach ein nicht-modales Fenster anzeigen lassen, was aber OnTop ist.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.077 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 11:55
Gerade die Delphi VCL hatte damit über die Jahre (mindestens ab Delphi 2007) immer wieder Probleme. Die Fenster kamen nicht in den Vordergrund. Wenn die auch noch modal waren, war die Applikation für den unerfahrenen Anwender nicht mehr bedienbar. Auf Panel umzusteigen, bedeutet auch die maximale Kontrolle darüber zu haben, wann und wo dieses "Fenster" anzuzeigen ist. Das hat mit Gefrickel oder Pseudo-Professionell nichts zu tun.
Freilich habe ich die letzten Jahre nur noch FMX entwickelt, ich weiss also nichts über den aktuellen VCL-Stand.

@Frickler: Wie gesagt, nutze ich FMX, da reicht es ein TRectangle mit Fill.Color = Null zu nehmen.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock (12. Okt 2018 um 11:59 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
592 Beiträge
 
#8

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 11:56
Dann wäre es ja keine modale Form ...
Jain. Es soll sich in etwa so verhalten, wie z.B. das Zoomen von Bildern auf manchen Webseiten (Ein Klick neben dem Bilder verkleinert es wieder).
Aber es soll schon Modal sein, heißt der Benutzer soll während diese Form offen ist, nicht in der aufrufenden etwas ändern können.

Es geht hier rein um den Komfort nicht zwingen das X oben rechts treffen zu müssen
Ist auch nicht auf meinen Mist gewachsen, sondern ein Wunsch von einem Kunden, der das selbst einer seiner Anwendungen wohl so hat(Name ist mir nicht bekannt).

Vorschlag: Keine eigene Form verwenden, sondern ein Panel auf einem durchsichtigem Panel in Applikationsgröße plazieren. Klicks auf dieses Panel können problemlos erkannt und ausgewertet werden. Einzig das verschieben des "Fenstres" ist dann nicht mehr so ganz einfach....aber machbar.
Hm...klingt für mich etwas aufwendig. Müsste doch einfacher gehen.

Die Idee mit dem Panel-Gefrickel erinnert mich an dubiose Software ala Registry-Cleaner und Konsorten im pseudo-professionellen Stil.

ich würde einfach ein nicht-modales Fenster anzeigen lassen, was aber OnTop ist.
OnTop heißt dann aber, dass er doch Zugriff auf die Controls der aufrufenden Form hat. Das darf aber nicht sein (gut, ich könnte die alle irgendwie disablen, aber das ist nicht ganz was ich möchte)

Auch wenn das, wie Markus schon sagt, dem Prinzip der modalen Form etwas zuwiderläuft, könntest Du die X- und Y-Werte des Mausklicks erfassen und feststellen ob sie

a) außerhalb der modalen Form
b) aber innerhalb der X- und Y-Werte Deiner Hauptform liegen.

Aber persönlich halte ich es für besser, eine modale Form durch eine Aktion innerhalb dieser Form zu schließen.
Das ist es, woran ich gerade rumprobiere. Letztlich brauch ich ja nur einen Event und schicke dann einfach eine Message an die modale Form. Dann kann sie sich ja "von innen" schließen.

Zur Zeit probiere ich gerade mit Application.OnMessage rum. Könnte auch funktionieren, allerdings wir die Message WM_LBUTTONDOWN nicht geschickt, wenn außerhalt der modalen Form (aber noch auf der Hintergrundform) geklickt wird.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
235 Beiträge
 
#9

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 11:59
Zitat:
gut, ich könnte die alle irgendwie disablen, aber das ist nicht ganz was ich möchte
Und die ganze Form Enabled auf False setzen? Einen Klick darauf sollte man trotzdem noch registrieren können.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
6.348 Beiträge
 
Delphi XE4 Professional
 
#10

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 12:03
Hallo,
du könntest die 2. Form auch semimodal aufrufen,
dann bleibt das 1. Form noch so bedienbar, wie du das willst.

Was passiert aber, wenn der Nutzer auf einen Button in dem 1. Form klickt,
soll dann der Button ausgelöst werden, oder das 2. Form geschlossen werden?
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf