von Axel Richter » So, 05.08.2012 08:55
Hallo,
das
kann nicht in der Sub Weiter stehen. Es muss in der Sub stehen, welche den Dialog per oDialog.execute() aufruft.
Grund:
Nach Aufruf von oDialog.execute() wird die Sub, welche das aufruft, an der Stelle angehalten und der Dialog wird *modal* angezeigt. Nach Beenden des Dialogs ([x], Cancel, .endExecute(), ...) will die Programmroutine mit dem Rückgabewert von oDialog in der Sub fortsetzen, die den Dialog aufgerufen hat. Das geht aber nicht, wenn vorher per .dispose() der Dialog aus dem Speicher entfernt wurde.
Code: Alles auswählen
Sub Dialog1
...
oDialog.execute()
msgbox "fertig"
oDialog.dispose()
End Sub
Sub Weiter
Select Case n ' es sind normal mehrere Dialoge
Case 1
Punkte1 = CStr(oDialog.GetControl("txtPunkte_neu").Text
Punkte = Punkte + Punkte1
n = n + 1
oDialog.EndExecute()
'oDialog.dispose()
End Select
msgbox "Schreiben"
Call Schreiben
End Sub
viele Grüße
Axel
Hallo,
das
[code]oDialog.dispose()[/code]
kann nicht in der Sub Weiter stehen. Es muss in der Sub stehen, welche den Dialog per oDialog.execute() aufruft.
Grund:
Nach Aufruf von oDialog.execute() wird die Sub, welche das aufruft, an der Stelle angehalten und der Dialog wird *modal* angezeigt. Nach Beenden des Dialogs ([x], Cancel, .endExecute(), ...) will die Programmroutine mit dem Rückgabewert von oDialog in der Sub fortsetzen, die den Dialog aufgerufen hat. Das geht aber nicht, wenn vorher per .dispose() der Dialog aus dem Speicher entfernt wurde.
[code]
Sub Dialog1
...
oDialog.execute()
msgbox "fertig"
oDialog.dispose()
End Sub
Sub Weiter
Select Case n ' es sind normal mehrere Dialoge
Case 1
Punkte1 = CStr(oDialog.GetControl("txtPunkte_neu").Text
Punkte = Punkte + Punkte1
n = n + 1
oDialog.EndExecute()
'oDialog.dispose()
End Select
msgbox "Schreiben"
Call Schreiben
End Sub
[/code]
viele Grüße
Axel