Hallo, Christian!
Danke für diese Hinweise!
Ich habe die Statusanzeige nochmal überarbeitet - da waren wirklich noch Macken drin.
Man kann nun auch im ::Status_Abbruch-Ereignis die Variable [cX.ProgrammNichtBeenden] (alt: [Status_KeinAbbruch]) setzen, um den Programmabbruch zu verhindern (ich hatte diese Möglichkeit schlicht übersehen, habe dann aber auch die bereits existierende Variable verwendet).
Dummerweise waren auch die Eigenschaften "kein 'Abbrechen" und "kein Skriptabbruch" irgendwie verwechselt - sorry!
Jedenfalls ist in der nächsten Version so, dass man für deine Anwendung entweder "kein Skriptabbruch" im Statusbefehl setzt und im Ereignis dann bei Bedarf das Skript selbst beendet, oder man setzt diese Variable [cX.ProgrammNichtBeenden] im ::Status_Abbruch-Ereignis, um das automatische Beenden des Programms zu verhindern.
Ansonsten stört mich an deinem Skript doch erheblich, dass du da den Button-Klick erneut als Unterprogramm aufrufst, obwohl dieses ja eigentlich noch läuft. Sollte man doch lieber nicht machen, weil ansonsten nach Abarbeitung des erneuten Aufrufs die ursprüngliche Schleife weiterläuft - das willst du ja nicht. Außerdem würde in einem realen Beispiel das Kopieren der Dateien ja auch von vorne beginnen...
Auch solltest du im Wenn-Befehl für sowas hier nicht die Art "Werteprüfung" für einen Vergleich verwenden (das ist für ein Switch..Case), sondern halt "Ausdruck".
Ich habe hier gleich mal Beispiele, wie das insgesamt eleganter geht/gehen wird.
Mit der korrigierten cX-Version ist die Behandlung des Abbruch-Ereignisses dann ganz einfach (so ging das ja etwa auch in cX4):
cX4Web Code
Was ist das?
1 :: Status_Abbruch
2 Wenn (? Unwahr: '[cX.JaAufFrage(Wollen Sie die Aktion wirklich abbrechen?)]')
3 Setze in [cX.ProgrammNichtBeenden]: '1'
4 Ende Wenn
5 Beende Unterprogramm (Zurück)
cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen
(5 Zeilen, cX 5.0.8.2)
Ist die Eigenschaft "kein Skriptabbruch" im Status-Befehl aktiviert, wäre es halt andersrum:
cX4Web Code
Was ist das?
1 :: Status_Abbruch
2 Wenn (? '[cX.JaAufFrage(Wollen Sie die Aktion wirklich abbrechen?)]')
3 Beende Skript
4 Ende Wenn
5 Beende Unterprogramm (Zurück)
cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen
(5 Zeilen, cX 5.0.8.2)
Ich werde beizeiten eine neue Version hochladen, OK?
Liebe Grüße
Stefan