Do Loop In Verbindung mit CheckBox

Amo8

Mitglied
Hi !
Ich versuche einer Variable jeweils durch setzen eines Hackens in einer CheckBox einen anderen Wert zuzuweisen und benutze dazu eine Do Loop Schleife zur Abfrage. Aber VB6 friert ein und es geht nichts mehr.

Private Sub Timer11_Timer()
Dim s As String
ReDim Eingabe(hwnd) As String
Dim msgstring As String
msgstring = s
Do
If Check3.Value = 1 Then s = Text16.Text
Do
If Check3.Value = 0 Then s = Text14.Text
Loop
Loop
Eingabe(hwnd) = Text7.Text
SendMessage Eingabe(hwnd), WM_SETTEXT, &H0, ByVal msgstring

End Sub

Vielleicht gibts auch eine andere Lösung?.
 
Hallo Amo8,
lass doch einfach die do loop schleifen weg!
Wie es scheint rufst du die funktion periodisch über die Timerfunktion auf.
Ein If else reicht völlig aus.
mfg
IT-Nobby
 
meinst Du so, das geht auch nicht.

Private Sub Timer11_Timer()
Dim s As String
ReDim Eingabe(hwnd) As String
Dim msgstring As String
msgstring = s

If Check3.Value = 1 Then
s = Text16.Text
Else
If Check3.Value = 0 Then
s = Text14.Text
End If
End If

Eingabe(hwnd) = Text7.Text
SendMessage Eingabe(hwnd), WM_SETTEXT, &H0, ByVal msgstring

Aber VB6 friet schon mal nicht ein. Wenn ich den Hacken rausnehme gehts nicht mehr.
1Then nimmt er, aber 0 Then nicht. Es wird dann einfach nichts mehr gesendet.
 
Hallo,

Private Sub Timer1_Timer()
Dim antwort As String
If Check1.Value = 1 Then
antwort = "Hacken gesetzt"
Else
antwort = "Hacken gelöscht"
End If
MsgBox antwort
End Sub
funktioniert einwandfrei.

Mir ist aufgefallen das du
msgstring = s
setzt bevor du die Checkbox auswertest.
msgsting müsste demnach immer leer sein.
msgstring = s gehört nach End IF

mfg
IT-Nobby
 
Wenn ich das jetzt richtig verstanden habe brauche ich nur 1Then abfragen, und wenn nicht gesetzt nimmt er automatisch den anderen Text. das sehe dann so aus:

Private Sub Timer11_Timer()
Dim s As String
ReDim Eingabe(hwnd) As String
Dim msgstring As String

If Check3.Value = 1 Then
s = Text16.Text
Else
s = Text14.Text
End If

msgstring = s

Eingabe(hwnd) = Text7.Text
SendMessage Eingabe(hwnd), WM_SETTEXT, &H0, ByVal msgstring

Das geht aber genauso wenig. Hacken drinn = geht Text16.Text wird gesendet, Hacken raus = nichts geht Text14.Text wird nicht gesendet.
 
Könnte es sein das es nur funktioniert, wenn es mit:

Private Sub Check_Click()

aufgerufen wird?. Ich rufe es ja in einen Timer auf.
 
Nur mal so als Frage, wieso verwendest du überhaupt einen Timer? Mit dem Click()-Ereignis kannst du das ganze ohne Probleme durchführen, ist außerdem noch ressourcenschonender:
Visual Basic:
Private Sub Check3_Click()
 Dim s As String, msgstring As String
 ReDim Eingabe(hWnd) As String
 msgstring = s
 If Check3.Value = 1 Then s = Text16.Text
 If Check3.Value = 0 Then s = Text14.Text
 Eingabe(hWnd) = Text7.Text
 SendMessage Eingabe(hWnd), WM_SETTEXT, &H0, ByVal msgstring
End Sub


Der Doc! (schimpfte "Verwendet doch endlich die VB-Tags [vb] und [/vb]"
 
Danke an Euch Beiden, ich habe es zwar noch nicht hinbekommen aber da die Code in der Syntax stimmen muß der Fehler bei mir woanders liegen. Also ist suchen angesagt.

Doc, das mußt Du noch mal ausführlich erklären:

Der Doc! (schimpfte "Verwendet doch endlich die VB-Tags
Visual Basic:
 und
"

Ich habe versucht vb über den Codeteil zu schreiben, aber es ging nicht auch setzen von Klammern hat nicht geholfen. Ich bin leider kein junger Spund mehr, der alles auf Anhieb findet. Nachtrag ich sehe gerade in der Vorschau, das es irgendwie gehen muß.
 
Wenn du Code schreibst, kannst du ihn mithilfe der Codetags formatieren. Diese Codetags gibts für fast alle Sprachen, für uns hier ist natürlich der VB-Tag wichtig.

Codetags sind immer in rechteckigen Klammern eingeschlossen, mit dem Tag [vb] beginnst du einen VB-Codeblock. Dann kommt dein Code, mit [/vb] beendest du dann den Block.

Wenn du also Code so eingibst:
[vb]
Private Sub Command1_Click()
MsgBox "Das ist ein Test!", "Test", vbOkOnly
End Sub
[/vb]

sieht das dann so aus:
Visual Basic:
Private Sub Command1_Click()
 MsgBox "Das ist ein Test!", "Test", vbOkOnly
End Sub
Der Vorzeil ist, dass Einrückungen erhalten bleiben und auch ein Syntaxhighlighting das Lesen erleichtert. Leider musst du die VB-Tags immer per Hand eingeben, anders als bei den PHP oder Code-Tags gibt es keinen Button dafür.

Und wenn du dich wunderst, wieso ich VB-Tags eingeben kann, die nicht interpretiert werden, ist ein kleiner Trick. Ist aber nur für Demozwecke interessant.


Der Doc!
 
Zurück