Autor Beitrag
wisher
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.01.12 15:03 
Hallo,

habe in FormC ein Ereignis definiert. FormB(parent von FormC) ist der Ereignisempfänger.
FormB wird von FormA(parent von FormB) erzeugt und darin angezeigt. Da FormA
aber auch andere Formulare anzeigen muss, löse ich in FormA ggf. FormB.Hide() aus und erzeuge ein
anderes Form darin.

Frage (1)
In FormB_VisibleChanged registriere, bzw. deregistriere ich das Ereignis von FormC.
Ist das eine sinnvolle Stelle, oder gibt es eine elegantere Lösung?

Frage (2)
Was passiert eigentlich, wenn ein Event beim gleichen Ereignisempfänger mehrfach regisitriert ist,
wird dann das Event mehrfach ausgelöst?

Vielen Dank
Sascha
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 25.01.12 16:48 
Zitat:
Frage (1)
In FormB_VisibleChanged registriere, bzw. deregistriere ich das Ereignis von FormC.
Ist das eine sinnvolle Stelle, oder gibt es eine elegantere Lösung?


Ich habe den Sinn von ein-ausblenden noch nicht verstanden. Entweder man hat ein modales System wo es immer nur eine aktive Form gibt oder ein nicht-modales wo es eben multiple Formen gibt. Du scheinst irgend ein anderes Model zu implementieren.Annhand deiner Erklärung des Warum und Weshalb könnten wir dann was sinnvolles oder elegantes vorschlagen so finde ich es erstmal nur komisch.

Das zweite das merkwürdig ist - was hast du in der Form implementiert das überhaupt noch Events werfen könnte wenn die Form nicht sichtbar ist? Wenn das ein userunabhängiger Hintergrundprozeß ist der weiterläuft ist es fraglich warum der überhaupt in der Form implementiert ist.

Zitat:
Was passiert eigentlich, wenn ein Event beim gleichen Ereignisempfänger mehrfach regisitriert ist,
wird dann das Event mehrfach ausgelöst?


Ja.
wisher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.01.12 17:05 
Ich habe ein Hauptformular das immer vorhanden ist. In diesem Hauptformular liegt ein Panel.
Per Menü kann ich Unterformulare erzeugen das Panel dem Unterformular zuweisen und anzeigen.
Wenn ich nun per Menü ein anders Unterformular anzeigen möchte setze ich das bisherige auf
unsichtbar und zeige das neue an.

Alle Unterformulare haben ihrerseits ein UserControl(quasi die dritte Schicht). Hier wird nun
ein Event ausgelöst, das im Unterformular(zweite Schicht) ausgelöst wird.

Da ich aber ja über das Hauptformular das Unterformular Sichtbar- bzw. unsichtbar mache, weil ich evtl.
ein anderes Unterformular anzeigen möchte, brauche ich eine Stelle, an der ich auch die Events
registriere, bzw. deregistriere.

Klingt verworren, ich weiß. Aufzeichnen wäre besser. :-)
wisher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.01.12 23:54 
Hallo,

hat sich erledigt. Habe nicht bedacht,dass die usercontolls jeweils
eigene Instanzen in den Unterformularen haben. Somit gelten auch die
Ereignisse nur in diesen Instanzen und ich muss die Events gar nicht
Wieder abhängen.

Danke und Gruß
Sascha