21. Okt 2009 

Im Handbuch steht zum in der V11 geänderten Befehl DIALOG ({Tabelle; }Formular; *) dies:

Übergeben Sie den optionalen Parameter *, wird Formular geladen und im zuletzt geöffneten Fenster des aktuellen Prozesses angezeigt. Der Befehl beendet seine Ausführung und lässt das aktive Formular auf dem Bildschirm. Dieses Formular reagiert dann normal auf Benutzeraktionen und wird geschlossen, wenn der mit dem Formular verbundene 4D Code (Objekt- oder Formularmethode) den Befehl CANCEL oder ACCEPT aufruft. Endet der aktuelle Prozess, werden die auf diese Weise erstellten Formulare automatisch so geschlossen, als ob CANCEL aufgerufen worden wäre. Dieser Öffnen-Modus ist besonders hilfreich zum Anzeigen eines Palettenfensters mit einem Dokument, ohne dass dazu ein weiterer Prozess aufgerufen werden muss.

Den letzten Satz mag ich besonders: endlich eine Möglichkeit ein Palettenfenster* im gleichen Prozeß zu betreiben.

In einem aktuellen Projekt konnte ich das gut für Debugging-Zwecke gebrauchen. Im Hauptfenster zeige ich die Oberfläche, die der Anwender sieht, und im zweiten Fenster die interne Buchführung.

mainScreen secondaryScreen

Beide Fenster sind im gleichen Prozeß, die Variablen auch die Arrays der Listbox sind Prozeß-Variablen. Die Arrays werden aktualisiert, nur das Debugging-Fenster zeigt die Änderungen erst, wenn es aktiviert wird. Nicht schön!

    Die üblichen Verfahren
  • REDRAW, hat auch keiner erwartet ;-)
  • Arrays neu dimensionieren
  • Formularseite wechseln
  • Fenstergröße um einen Pixel verändern
  • helfen nicht.

Jetzt habe ich einen Lösung gefunden.

In der Formularmethode des Hauptfensters rufe ich
CALL PROCESS(Current process)
und der Update erfolgt sauber: kein Blinken, kein Gezappel, sofort! Der Aufruf macht eigentlich nichts, läßt aber neuzeichnen – wahrscheinlich sogar hochoptimiert.

* ich weiß Paletten sind out. Mit Recht! Doch leider kann ich keine Formular-Elemente so in anderen Formularen weiterverwenden, daß ich die Paletten einsparen könnte.

4D Themen: Berichte in Arbeit