von Vanished » Mi, 29.12.2004 15:14
Eine Weile bin ich (auch Dank Eurer Hilfe) gut weitergekommen, aber nun hänge ich an einem neuen Problem fest.
Stark vereinfacht geht es darum, dass nach einer Prüfziffernberechnung das Feld mit der zu prüfenden Zahl wieder den Focus erhalten soll (soweit kein Problem), der darin enthaltene Text (Zahlen) soll dann aber vollständig markiert sein (so wie es bei einem Sprung mit Tab auch der Fall ist).
Ich habe mich eine ganze Weile mit setSelection beschäftigt (weil ich es aus VBA kenne), kriege es aber - mal wieder - nicht hin.
Falls nicht klar geworden sein sollte, worum es geht, hier ein (ebenfalls stark vereinfachter) Beispielcode, ein Dialog mit einem Textfeld und einem CommandButton. Nach dem Auslösen der OK-Schaltfläche der MsgBox soll der gesamte Text im Textfeld markiert sein.
Code: Alles auswählen
Dim oDialog as Object
Sub Dialog_starten
DialogLibraries.LoadLibrary("Standard")
oDialog=Createunodialog(dialogLibraries.Standard.Produkt)
oDialog.execute()
oDialog.dispose()
End Sub
'Prüfung der Eingaben zur Produktnummer und Prüfzifferncheck sub läuft als Ereignis "Text modifiziert"
sub produkt
if len(oDialog.getcontrol("tf3").Text)<4 then exit sub
if len(oDialog.getcontrol("tf3").Text)=4 then gosub pzberechnen
Exit sub
pzberechnen:
Dim prod as string
Dim p1 as Integer, p2 as Integer, p3 as Integer
'Feld auslesen
prod = oDialog.getcontrol("tf3").Text
'aufsplitten und berechnen
p1 = CDbl(Left(prod, 1)) * 3
p2 = CDbl(Mid(prod, 2, 1)) * 2
p3 = CDbl(Mid(prod, 3, 1)) * 1
pz = (p1 + p2 + p3) Mod 11
If pz <> CDbl(Right(prod, 1)) Then GoSub pznichtok else gosub pzok
return
pzok:
oDialog.getControl("tf3").Model.TextColor=rgb(0,0,0)
msgbox("Die Prüfziffer ist " + pz + " und damit OK!")
return
pznichtok:
'wenn die Prüfziffer nicht korrekt ist, Textfeld mit roter Schrift versehen
oDialog.getControl("tf3").Model.TextColor=rgb(255,0,0)
'Noch eine Mitteilung schreiben
msgbox "Die Produktnummer" + chr(13) + prod + chr(13) + "ist fehlerhaft. Die PZ müßte " + pz + " sein", 48, "Produktnummer"
'Den Focus auf Produkt setzen
oDialog.getcontrol("tf3").setfocus()
return
End Sub
sub loeschen
oDialog.getControl("tf3").Model.TextColor=rgb(0,0,0)
oDialog.getcontrol("tf3").Text=""
oDialog.getcontrol("tf3").setfocus()
End sub
Und denkt bitte daran: Ich bin Anfänger, also bitte gnädig sein beim Zerreißen des Codes
Viele Grüße,
Vanished
Eine Weile bin ich (auch Dank Eurer Hilfe) gut weitergekommen, aber nun hänge ich an einem neuen Problem fest.
Stark vereinfacht geht es darum, dass nach einer Prüfziffernberechnung das Feld mit der zu prüfenden Zahl wieder den Focus erhalten soll (soweit kein Problem), der darin enthaltene Text (Zahlen) soll dann aber vollständig markiert sein (so wie es bei einem Sprung mit Tab auch der Fall ist).
Ich habe mich eine ganze Weile mit setSelection beschäftigt (weil ich es aus VBA kenne), kriege es aber - mal wieder - nicht hin.
Falls nicht klar geworden sein sollte, worum es geht, hier ein (ebenfalls stark vereinfachter) Beispielcode, ein Dialog mit einem Textfeld und einem CommandButton. Nach dem Auslösen der OK-Schaltfläche der MsgBox soll der gesamte Text im Textfeld markiert sein.
[code]
Dim oDialog as Object
Sub Dialog_starten
DialogLibraries.LoadLibrary("Standard")
oDialog=Createunodialog(dialogLibraries.Standard.Produkt)
oDialog.execute()
oDialog.dispose()
End Sub
'Prüfung der Eingaben zur Produktnummer und Prüfzifferncheck sub läuft als Ereignis "Text modifiziert"
sub produkt
if len(oDialog.getcontrol("tf3").Text)<4 then exit sub
if len(oDialog.getcontrol("tf3").Text)=4 then gosub pzberechnen
Exit sub
pzberechnen:
Dim prod as string
Dim p1 as Integer, p2 as Integer, p3 as Integer
'Feld auslesen
prod = oDialog.getcontrol("tf3").Text
'aufsplitten und berechnen
p1 = CDbl(Left(prod, 1)) * 3
p2 = CDbl(Mid(prod, 2, 1)) * 2
p3 = CDbl(Mid(prod, 3, 1)) * 1
pz = (p1 + p2 + p3) Mod 11
If pz <> CDbl(Right(prod, 1)) Then GoSub pznichtok else gosub pzok
return
pzok:
oDialog.getControl("tf3").Model.TextColor=rgb(0,0,0)
msgbox("Die Prüfziffer ist " + pz + " und damit OK!")
return
pznichtok:
'wenn die Prüfziffer nicht korrekt ist, Textfeld mit roter Schrift versehen
oDialog.getControl("tf3").Model.TextColor=rgb(255,0,0)
'Noch eine Mitteilung schreiben
msgbox "Die Produktnummer" + chr(13) + prod + chr(13) + "ist fehlerhaft. Die PZ müßte " + pz + " sein", 48, "Produktnummer"
'Den Focus auf Produkt setzen
oDialog.getcontrol("tf3").setfocus()
return
End Sub
sub loeschen
oDialog.getControl("tf3").Model.TextColor=rgb(0,0,0)
oDialog.getcontrol("tf3").Text=""
oDialog.getcontrol("tf3").setfocus()
End sub
[/code]
Und denkt bitte daran: Ich bin Anfänger, also bitte gnädig sein beim Zerreißen des Codes ;)
Viele Grüße,
Vanished