Hallo,
Ich habe hier eine VBScript-HTA bei der ich einige Arbeitsabläufe in Klassen kapseln möchte.
Das funktioniert auch eigentlich recht gut, nur habe ich ein Problem mit "setTimeout".
Nein, Du hast ein Problem damit, eine Funktions- bzw. Sub-Referenz in VBSCRIPT zu erzeugen. Dafür ist GetRef("subname") zuständig. Das funktioniert aber nicht mit Klassenmethoden. Also GetRef("me.subname") ist nicht vorgesehen.
class clstest
sub test()
msgbox "Hier bin ich richtig"
setTimeout "test()",1000
// hier würde in JavaScript stehen:
setTimeOut(this.test, 1000);
// in VBSCRIPT würde aber
setTimeOut me.test, 1000
// die Methode me.test aufrufen, statt eine Referenz zu erzeugen.
// Und GetRef("me.test") geht, wie gesagt, nicht.
end sub
end class
>
> Eigentlich sollte alle Sekunde die sub "test" in der Klasse gestartet werden. Bei initialen Aufruf passiert das auch, aber beim 2. kommt die sub von oben. Es liegt also wohl am Scope - aber wie kann ich das ändern?
Was gehen würde wäre:
~~~vbscript
class clstest
public default sub test
msgbox "Hier bin ich richtig"
if msgbox("Wiederholen?", 4) = 6 then
setTimeout me, 1000
end if
end sub
end class
sub s_onload
dim ecls
set ecls = new clstest
ecls.test
end sub
sub test
msgbox "Hier bin ich falsch"
end sub
window.onload = GetRef("s_onload")
viele Grüße
Axel