Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Boolesche variable setzen bzw. rücksetzen über einen Button
das erscheint mir unlogisch warum soll sich Aktion als mein Joystick-Button auf true Setzen wenn er zuvor false war ich will doch eine variable setzen und nicht den Button
Das Funktioniert leider noch nicht wie von mir gewünscht
Code:
Private Sub lblButton2_Change()
If Not bButton(2) And Not bPressed1(2) Then
shpHoM(0).Visible = True
Else
shpHoM(0).Visible = False
End If
bPressed1(2) = bButton(2)
End Sub
Sofort nach dem das Fom gelden ist ist shpHoM(0).visibil = True
wenn ich dann die Taste am Joystick drücke wird shpHoM(0).visibil = False
und bei weiterem drücken der Taste pasiert nichts mehr?
bhmButton (statische Variable, die sich den Buttonwert merkt)
Code:
Private Sub lblButton2_Change()
If Not bPressed1(2)AND bButton(2) Then
If Not bhmButton then
shpHoM(0).Visible = True
bhmButton = True
Else
shpHoM(0).Visible = False
bhmButton = False
End If
End If
bPressed1(2) = bButton(2)
End Sub
Bin zwar kein vb-Könner, aber hilft das?
Man müßte statt der neuen statischen Variablen auch direkt shpHoM(0).Visible abfragen können.
Private Sub lblButton2_Change()
If Not bPressed1(2)AND bButton(2) Then
If Not shpHoM(0).Visible then
shpHoM(0).Visible = True
Else
shpHoM(0).Visible = False
End If
End If
bPressed1(2) = bButton(2)
End Sub
Ich glaube, du mußt bPressed1(2) zurücksetzen, wenn der Joystickknopf nicht mehr betätigt ist. Das mußt du doch im Debugger sehen können, was diese Variable macht, oder? Ich vermute mal, sie bleibt auf True, da die Subroutine lblButton2_Change() doch sicher nach dem Loslassen des Buttons nicht mehr aufgerufen wird. Also wird beim 2. Aufruf die Variable bPressed1(2) noch immer auf True sein und das bleibt sie praktisch für immer. Die könnte man evtl. auch als lokale Variable in der Subroutine definieren, dann sollte es gehen.
Ich glaube, ich habe es verstanden. Wie wäre's mit:
Code:
Public Static oldValue as Bool, newValue as Bool, state as Bool
Private Sub lblButton2_Change()
'Der Wert hat sich geändert, sollen wir toggeln?
if oldValue = newValue then
' Wir toggeln und merken uns das
newValue = not newValue
state = not state
else
' Wir toggeln nicht und merken uns auch das
oldValue = newValue
end if
End Sub
Dein Zustand ist natürlich in "state" gespeichert.
Ich hoffe, ich konnte Dir helfen.