For...Next-Anweisung anhalten, bis

Hi Leute,

stehe aufm Schlauch.

Problem: Innerhalb einer For…Next-Anweisung wird eine Bedingung abgefragt. Wenn diese einen bestimmten Wert hat, soll sie manuell durch Eingabe in einer dann erscheinenden Form geändert/angepasst werden.

Meine For…Next-Anweisung wartet nur leider nicht auf meine Änderung in der anderen Form, sondern macht artig weiter.

Jemand ne flagfreie Lösung? Ne Schleife durchlaufen lassen, bis alles eingegeben ist, find ich doof.

THX im Voraus.

LG birddesign

versuch es mal mit Exit For

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

sie zu beenden bringt mich nicht weiter. Die for…Next muss weiter laufen, bis alles abgearbeitet ist, nur eben mit Pause, bis die Eingaben im anderen Fenster erledigt sind…

Hallo Tom,

wie wäre es denn mit
while (Bedingung ob alles erfüllt ist)
(mach alles damit es sich erfüllt)
wend

Mit freundlichem Gruß
Jadawin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi, birddesign!

stehe aufm Schlauch.

Problem: Innerhalb einer For…Next-Anweisung wird eine
Bedingung abgefragt. Wenn diese einen bestimmten Wert hat,
soll sie manuell durch Eingabe in einer dann erscheinenden
Form geändert/angepasst werden.

Meine For…Next-Anweisung wartet nur leider nicht auf meine
Änderung in der anderen Form, sondern macht artig weiter.

Du musst die Form modal bzw. als Dialog öffnen, dann wartet Dein Programm auch brav…

Gruß, Manfred

Hi Tom,
Du brauchst innerhalb Deiner For-Next-Schleife etwa folgendes:

for …
Prüfung ob Daten OK
falls nicht
globale variable leeren
Fenster zum Korrigieren öffnen
do until globale variable gesetzt ist
doEvents()
loop
next

In dem neuen Fenster korrigierst Du die Daten und setzt die Globale Variable.
DoEvents ist hierbei wichtig, nicht vergessen.
Bei Fragen was das ist, bitte nochmal fragen nur grob: Das Programm läuft solange in der Schleife und mit DoEvents erlaubst Du dem System noch etwas anderes zu machen, bspw. auf Tastendrücke zu reagieren oder auch daß andere Programme laufen können … in Deinem Fall darfst Du Eingaben in dem neuen Fenster machen.
Die zweite Schleife unterbricht den Ablauf solange bis die Variable gesetzt wurde und macht dann wieder weiter.

Du musst die Form modal bzw. als Dialog öffnen, dann wartet
Dein Programm auch brav…

Gruß, Manfred

Hallo Manfred,

ich hab mich belesen, die form mit der showmodal-Eigenschaft scheint mir die beste Möglichkeit zu sein.
Gefunden habe ich das…

 frmBeispiel.Show([modal], [Ownerform])

hmm, ich hab in dem Fall keine Ownerform, da die Prozedur in einem Modul ausgeführt wird. Wo muss ich die Eigenschaft setzen, im Code der sich öffnenden Form oder in der Prozedur, in der die For…Next läuft?

Gruß birddesign

Hallo,

Du öffnest die Form doch mit

FormX.Show

schreib einfach

FormX.Show(1)

Das reicht schon.

Gruß, Rainer


Funktioniert! Danke an alle :o)
wusst ichs doch, das es ne vernünftige Lösung ohne lästige Schleifen gibt.

Rainer, warum „1“ ?
Versuche noch zu verstehen was es da tut…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Rainer, warum „1“ ?
Versuche noch zu verstehen was es da tut…

weil die Funktion einen boolschen Wert benötigt. Du darfst auch VbModal ausschreiben, wenn Du das übersichtlicher findest, übergeben wird dann aber auch eine 1. :smile: Das ist bei allen Konstanten so, hinter VbYellow verbirgt sich auch nur ein QbColor(14).

Gruß, Rainer