komma4 hat geschrieben:Parallel geht nicht.
... geht! (Stichwort "non modal")
Einen schönen guten Abend erikafuchs!
Eine "non-modales" Dialogfenster kann mit "oDialog.setVisible(True)" statt mit "oDialog.execute()" erzeugt werden - juhu!
Während bei "Execute()" das Makro abstoppt und auf die Schließen-Aktion des Dialogfensters wartet, läuft nach "setVisible" das Makro normal weiter. Das non-modale Dialogfenster bleibt dann solange "schwebend" auf dem Bildschirm, bis das Makro abgearbeitet ist. Vor dem Ende dieses Start-Makros können natürlich problemlos weitere Subs angesprungen werden. Wichtig ist nur, daß "oDialog" (= Objekt zum Dialogfenster) als globale Variable deklariert wurde. Damit können dann aus jeder beliebigen Subroutine heraus (welche z.B. die eigentlichen Programm-Aufgaben erledigen) jederzeit die Controls des geöffneten Dialogfensters mittels oDialog.getControl("NameDesControls") angesteuert und dynamisch verändert werden - also auch die Progressbar oder was auch immer!
Es gibt nur ein kleines Problem mit der "X-Schaltfläche" (= schließen, Titelleiste oben rechts), weil die nämlich hier nicht mehr funktioniert. Man muß also eine separate Schaltfläche "Schließen" im Dialogfenster einfügen, dieser aber NICHT die Eigenschaft "Abbrechen" sondern eine weitere Sub zuordnen, welche dann das Dialog-Objekt eigenständig "killt". Auch dazu findet wieder die globale Objekt-Variable oDialog Verwendung: Mit dem Befehl "oDialog.dispose" kann das non-modale Dialogfefenster von jeder Sub aus geschlossen werden (Achtung: "oDialog.endExecute" generiert bei non-modalen Fenstern einen Fehler - man kann hier also nur "dispose" verwenden!) .
Übrigens: Ein schöner Nebeneffekt non-modaler Dialogfenster ist die Möglichkeit, gleichzeitig den Fokus auf die darunterliegenden Fenster setzen zu können und dort ungehindert weiterarbeiten zu können - das Dialogfenster bleibt unbeeindruckt über allem schweben! Wer das nicht möchte, kann noch in die Trickkiste greifen und den Befehl "oDialog.execute()" im Start-Makro nachschieben - damit wird das Dialogfenster wieder "modal", hat aber weiterhin die Funktionalität eines non-modalen Fensters!
Ich hoffe, ich hab' mich halbwegs verständlich ausgedrückt - viel Spaß beim Ausprobieren!
Gruß: ejomi (der jetzt endlich Feierabend macht!)