[gelöst] Reihenfolge der Codeausführung

17. Dezember 2008 17:43

Ich versteh gerade die Reihenfolge in der unten stehender Code in eine CU ausgeführt wird gar nicht. HTMLEditor ist eine .NET COM-Komponente, die eine Form zur Verfügung stellt und per Automation eingebunden. Der ganze Code steht in OnRun().

Code:
MESSAGE('beforecreate');
CREATE(HTMLEditor);
MESSAGE('aftercreate');
HTMLEditor.OpenReadOnly := FALSE;
MESSAGE('beforeserial');
SN := SERIALNUMBER;
MESSAGE(SN);
HTMLEditor.NAVCode :=SN;
cont.SETRANGE("No.", '276');
cont.FIND('-');
cont.CALCFIELDS(Remarks);
HTMLTextRead.READ(StreamInObj);
cont.Remarks.CREATEINSTREAM(StreamInObj);
WHILE NOT StreamInObj.EOS DO BEGIN
StreamInObj.READTEXT(tmpHTMLText);

HTMLEditor.AppendHTMLText(tmpHTMLText);
END;

HTMLEditor.ShowDialog;
IF HTMLEditor.DialogResultOK THEN BEGIN
... cont.MODIFY ...
END
ELSE
MESSAGE('Kein OK');


Folgende Phänomen:

Beim Aufruf der CU wird erst HTMLEditor.ShowDialog ausgeführt, dann folgen die verschiedenen MESSAGE's. Auch HTMLEditor.OpenReadOnly := FALSE wird korrekt vor ShowDialog ausgeführt. Bei Auskommentieren von OpenReadOnly wird auch tatsächlich nur ReadOnly geöffnet. Beim Schließen der Form wird HTMLEditor.DialogResultOK korrekt ausgeführt und die Daten korrekt gespeichert. An HTMLEditor.NAVCode wird die Seriennummer allerdings nicht übergeben.

Ich versteh es nicht.

Volker
Zuletzt geändert von vsnase am 18. Dezember 2008 08:57, insgesamt 1-mal geändert.

Re: Reihenfolge der Codeausführung

17. Dezember 2008 17:57

MESSAGES werden immer im Stapel am Ende einer Transaktion angezeigt. Deswegen kannst du sie als Reihenfolgeindikator nicht verwenden.
Verwende statt dessen CONFIRM.

Re: Reihenfolge der Codeausführung

17. Dezember 2008 19:36

ja, aber ...

Code:
CREATE(HTMLEditor);
wird ausgeführt
Code:
HTMLEditor.OpenReadOnly := FALSE;
wird ausgeführt
Code:
HTMLEditor.NAVCode :=SN;
wird NICHT ausgeführt, SN soll in COM-Komponente angezeigt werden, ist aber nicht vorhanden. Nach Schließen der COM-Komponente wird die SN aber via MESSAGE angezeigt.
Code:
HTMLEditor.AppendHTMLText(tmpHTMLText);
wird ausgeführt
Code:
HTMLEditor.ShowDialog;
wird ausgeführt

wie das?
Zuletzt geändert von Natalie am 17. Dezember 2008 22:27, insgesamt 1-mal geändert.
Grund: Code-Tags richtig geschlossen

Re: [gelöst] Reihenfolge der Codeausführung

18. Dezember 2008 09:00

der Fehler lag in der COM-Komponente (und damit wie meistens vorm Bildschirm) und nicht in NAV.

Volker