German Problem mit "Wischen"

pjo12345

Active Member
Licensed User
Longtime User
Hallo,

ich habe ein Panel auf dem mehrere Labels platziert sind. Mit dem Wischen von links nach rechts oder umgekehrt wird der Inhalt der Labels geändert. Das hat bis jetzt auch gut geklappt. Aber nun nutze ich von den Labels das Click-Event. Leider funktioniert jetzt das Wischen nicht mehr, wenn der Anfangspunkt auf einem Label liegt. Hier mal der Code für das Wischen (aus einem gepostetem Beispiel):
B4X:
Sub Panel1_Touch (Action As Int, X As Float, Y As Float)
   Select Action
      Case Activity.ACTION_DOWN
         StartX = X
         StartY = Y
      Case Activity.ACTION_UP
         If Abs(Y - StartY) > 20%y Then Return
         If X - StartX > 20 Then 'von links nach rechts wischen 
            
            DatenEintragen
            
         Else If StartX - X > 20 Then 'von rechts nach links wischen

            DatenEintragen

         End If
   End Select
End Sub

Das Click-Event habe ich zu Testzwecken erst einmal so programmiert:
B4X:
Sub lbl_click
   Dim l As Label
   l = Sender
   Msgbox(l,"Test")
End Sub

Wie mache ich das nun am Besten, dass das Wischen und das Click-Event funktioniert?

mfg pjo12345
 

brunnlechner

Member
Licensed User
Longtime User
Hallo,
ich bin auf der Suche nach einer Lösung für das gleiche Problem nur statt Labels verwende ich Buttons.
Hat schon jemand eine Lösung gefunden?

MfG
Franz
 

klaus

Expert
Licensed User
Longtime User
Ich befürchte dass Ihr die Click Events in den Labels oder Buttons vergessen müsst denn diese 'konsumieren' das Panel_Touch Event !.
Ihr könnt aber Alles im Panel_Touch Event behandeln.
Ihr könnt in Action_DOWN prüfen ob die Koordinaten in einem Label oder Button liegen, eine Variable aktivieren und in Action_UP prüfen ob die Koordinaten noch im Label oder Button sind und danach entsprechend zu handeln.
 

brunnlechner

Member
Licensed User
Longtime User
Hallo Klaus,
danke für die schnelle Antwort, ich habe befürchtet, daß es keine einfache Lösung gibt.
 

brunnlechner

Member
Licensed User
Longtime User
Ich verwende ein Panel mit 6 Buttons, die durch das wischen von oben nach unten auf 12 Buttons erweitert werden sollten.
Am Anfang ist ein kleines Panel sichtbar, wenn man von oben nach unten über das Panel wischt wir ein größeres Panel mit 12 Buttons sichtbar.
wenn man auf einen Button klickt wird ein Code ausgeführt und das große Panel wird wieder durch das Kleine ersetzt.
Das große Panel sollte auch durch wischen von unten nach oben durch das kleine Panel ersetzt werden.
 

klaus

Expert
Licensed User
Longtime User
Es ist machbar mit durchsichtigen Panels die über den original Panels liegen und Alles in den Touch Events dieser Panels behandeln.
Beiliegen ein kleines Testprogramm.
 

Attachments

  • ButtonPanels.zip
    8.1 KB · Views: 297
Last edited:

brunnlechner

Member
Licensed User
Longtime User
Hallo Klaus,
darauf wäre ich selber nie gekommen,
Panel_Touch Event und Buttons funktionieren einwandfrei,
und dann noch ein fertiges Testprogramm dazu.
Du bist echt genial und hilfsbereit - Vielen Dank!

PS: Ich habe noch nach Deiner Methode ein LongClick event für die Buttons hinzugefügt und bei Button_Down wird der Button DarkGray.
 

Attachments

  • ButtonPanels+.zip
    9.1 KB · Views: 318
Last edited:
Top