Boolesche variable setzen bzw. rücksetzen über einen 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?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Irgenwie ist dein code komisch.

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.
 
hm jetzt wird beim drücken der Joystick-Taste shpHoM(0).Visible = True
bei erneutem drücken aber nicht wieder False

bhmButton muß eine globale Variable sein, die im gesamten Programm Gültigkeit hat.
Oder du versuchst, wie schon erwähnt das hier:

Man müßte statt der neuen statischen Variablen auch direkt shpHoM(0).Visible abfragen können.

Code:
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zurück
Oben