Formular-Ebenen speichern und setzen?

DrMueller

Erfahrenes Mitglied
Hallo Leute,
ich habe folgendes Problem: User macht ändert auf Formular A einen Wert, dies führt dazu das Formular B, welches im Hintergrund offen ist, von uns aktualisiert wird. Wenn dies geschieht, wird natürlich Formular B in den Vordergrund gestellt und Formular A geht in den Hintergrund.
Dies ist soweit falsch.
Da wir x Formulare offen haben, wäre die einfachste Möglichkeit, vor dem Aufruf der Aktualisier-Funktion alle Formulare mit deren Ebene zu speichern und danach diese wieder zu laden.

Ich habe leider noch gar keine Antwort zu dem Thema, ja nicht mal einen Ansatz gefunden.

Hat jemand hier schon Erfahrungen gemacht? Suche ich eventuell nach den falschen Stichworten?
 
Womit arbeitest du/ihr und was bedeutet "...welches im Hintergrund offen ist, von uns aktualisiert wird..."?

Reicht es nicht aus wenn Formular B mit "HIDE" wieder ausgeblendet wird?
 
Die Fenster sind immer offen und angezeigt, meist auch maximiert.
Davon gehen wir immer aus, es geht da rein um die Ebene, in der sie sind. Die oberste Ebene hat das fokussierte Fenster.
Nun geschieht folgendes: Der User macht eine Aktion am fokussierten Fenster. Diese Aktion löst aus, dass das darunter liegende Fenster aktualisiert wird. Durch diese Aktualisierung hat dann dieses Fenster den Fokus, es legt sich also über das erste. Das ist natürlich unschön, denn so muss der User das erste Fenster wieder nach vorne klicken, bevor er weiter machen kann. In diesem Fall kann ich natürlich einfach Fenster A wieder nach vorne holen, aber es geht eben auch komplexer:
Fenster A Fokus
Fenster B zweite Ebene
Fenster C dritte Ebene

Fenster A Aktion aktualisiert Fenster C. Reihenfolge danach:
Fenster C
Fenster A
Fenster B

Wenn ich Fenster A einfach wieder nach vorne stelle, ist die Reihenfolge danach ja:
Fenster A
Fenster C
Fenster B

ideal wäre eben hier, wenn ich speichern könnte
Fenster A Ebene 1
Fenster B Ebene 2
Fenster C Ebene 3

und das danach auch wieder genau so laden könnte.


Aber wie gesagt, ich weiss gar nicht, ob so was möglich ist. Ich habe erstaunlich wenig zum Thema Formular-Ebenen Handling gefunden.
 
Und wo wird die Reihenfolge der Fenster festgehalten? Gibt es ein Menü "Fenster" wo dann alle geöffneten Fenster eingetragen sind, so quasi auf die Art:

Menü "Fenster"
- 1 Fenster A
- 2 Fenster B
- 3 Fenster D
- 4 Fenster C


Dann könntest du ein globales Array anlegen welches den Namen, die ID oder ein sonstiges Kennzeichen des jew. Fensters in der Reihenfolge enthält wie sie sein soll.

Du musst dann halt überall da wo die Reihenfolge geändert werden darf/muss das Array entsprechend neu ordnen.
 
Hm das Problem ist, die Reihenfolge ändert sich ja bei jedem Klick auf irgend ein Formular. Gibt es keine Windows eigene Funktion, welche so was speichert resp. ausliest.

Und dann wäre ja immer noch das Problem, dass ich dann die Fenster so anordnen muss, am besten ohne das der User was davon mitbekommt.
 
Also ob es eine Funktion innerhalb von Windows gibt, weiß ich nicht.

Selbst wenn es so etwas gibt, dann musst du dieser Funktion auch sagen wann welches Fenster welche Position bekommen soll.

Aber nochmal die Frage(n):
Wo werden die Fenster angeordnet? Innerhalb eines Menüs, hat jedes Fenster seinen eigenen Eintrag in der Taskleiste oder wie?
Wann und wie wird die Reihenfolge festgelegt. Macht das Programm eine feste Vorgabe oder hängt es davon ab in welcher Reihenfolge die Fenster zum ersten Mal durch den User geöffnet werden?

NACHTRAG:
Wenn der einzige Grund für die ungewollte Änderung der Reihenfolge der ist das bestimmter Code innerhalb einer bestimmten Form ausgeführt wird, dann soltest du vielleicht auch den Code ändern.

Lagere doch den Code in separate Module aus dann können Berechnungen und ähnliche Dinge ausgeführt werden ohne eine bestimmte Form anzusprechen.
Damit die Fenster beim Anzeigen auch die aktuelle Daten enthalten kannst du im Activate-Ereigniss einfach die Daten neu einlesen.
 
Zuletzt bearbeitet:
Hallo tombe,
diese werden eben noch nirgends gespeichert.
Ich denke auch nicht, dass es realistisch ist, jeden Klick auf ein Fenster abzufangen und entsprechend zu speichern.
Ich bin nicht ganz sicher, ob wir vom selben reden bzgl. Ebenen: Es geht rein um die Anzeige am Desktop.
Ich habe soweit anscheinend nur zwei Möglichkeiten das ohne grösseren Aufwand umzusetzen:
Ich speichere nur das oberste Fenster und setze dieses nach dem Aktualisieren der anderen Fenster
Aktualisierung geschieht erst beim Form_Activate

Danke schon mal.
 
Ich bin nicht ganz sicher, ob wir vom selben reden bzgl. Ebenen: Es geht rein um die Anzeige am Desktop.

Da könntest du recht haben, denn so wirklich verstanden habe ich es nicht.
Wenn die Fenster wie oben geschrieben maximiert dargestellt werden sieht man ja eh nur das vorderste und die Reihenfolge der anderen ist (meiner Meinung nach) egal.

Wenn die Fenster überlappend dargestellt werden, dann muss die Reihenfolge ja irgendwann irgendwie festgelegt werden. Es muss außerdem auch irgendwo definiert sein was passieren muss damit ein Fenster dauerhaft weiter nach vorne oder hinten gestellt wird.

Erkläre doch ein bisschen genauer wie das ablaufen soll.
 

Neue Beiträge

Zurück