Datagrid scrollen einstellen

Startseite Foren Deutsches LiveCode-Forum Datagrid scrollen einstellen

Schlagwörter: 

Ansicht von 5 Antwort-Themen
  • Autor
    Beiträge
    • #25319
      Jochen
      Teilnehmer

        Hallo zusammen,

        ich habe mich in den letzten Wochen damit beschäftigt, wie man ein Datagrid (Form) erstellt und programmiert.
        Es soll auf einem Handy eine Liste angezeigt werden, die bei Bedarf scrollbar ist, ähnlich den Kontakten bei Whatsapp zum Beispiel. Klappt auch alles.

        Nur wenn man in der Liste scrollt, wird oft der Punkt ausgewählt an dem man den Finger weg nimmt (mouseUp halt)

        Mein Code sieht so aus:

              
        on mouseUp
        put the dghilitedline of group "DataGrid 20" of me into Taste
        end mouseUp
        

        Kann man die Empfindlichkeit vom scrollen bzw auswählen einstellen?
        Oder ist dghilitedline nicht das ideale?

        Wäre sehr dankbar für eure Hilfe

        Schöne Grüße
        Jochen

      • #25348
        Torsten
        Teilnehmer

          Hi Jochen,

          das Problem ist, dass man auf dem Desktop mit dem Mausrad scrollt und mit Mauskklick = mouseUp auswählt. Auf dem Touchbildschirm ist das aber leider zusammengemixt. Wenn Du deine Daten nicht als Liste mit mobilePick darstellen kannst, empfehle ich einen extra Button unter dem DataGrid, der die entsprechende Aktion ausführt und das mouseup aus dem Cardscript zu entfernen.

          Dann wäre der Code im Button einfach:

          on mouseUp
             put the dghilitedline of group "DataGrid 20" into Taste
          end mouseUp

          Wobei Du in diesem Fall nur die Nummer der Zeile bekommst, z.B. 9

          Happy Coding
          Torsten

        • #25380
          Jochen
          Teilnehmer

            Halo Torsten,

            vielen Dank für deine Antwort. Ich hab es schon fast befürchtet. Ein Button zum Bestätigen der Auswahl finde ich nicht so schön. Ich veruch es mal weiter…

            Trotzdem schonmal vielen Dank.

            Ich wünsche euch allen schöne Weihnachten und bleibt gesund!

          • #25690
            Olaf
            Teilnehmer

              Hallo zusammen,

              meint Ihr, dass man hier was mit mouseDoubleUp anstelle mouseUp erreichen würde?

              Also scrollen ganz normal und bei Auswahl dann doppelt drauf tippen?

              Und zweite Idee nach livecode Dictionary durchblättern: mouseStillDown
              Verwendungsmöglichkeit im Dictionary schliesst alle Plattformen/OS ein.

              Ich würde mir vorstellen, dass man dann etwas länger auf der Auswahl bleiben muß, bevor der event handler ausgelöst wird. Es werden zwei Properties angegeben, mit denen man die Zeit wohl konfigurieren kann.

              Viele Grüße,
              Olaf

            • #25703
              Axwald
              Teilnehmer

                Hallo,

                Du merkst Dir im „mouseDown“ die Position (in einer script local variable). Im „mouseUp“ rufst Du nochmal die Position ab, und wenn die zu weit weg von der ersten ist, war es kein „Klick“, sondern ein „Swipe“.

                Vereinfacht:

                local lStartLoc                                                        --  die erste Mausposition
                
                on mouseDown
                   put the mouseLoc into lStartLoc                                        --  Mausposition merken
                end mouseDown
                
                on mouseUp
                   put abs(the mouseH - item 1 of lStartLoc) into myHD                 --  horizontale Abweichung
                   put abs(the mouseV - item 2 of lStartLoc) into myVD                   --  vertikale Abweichung
                   if (myHD > 40) OR (myVD > 40) then 
                      pass mouseUp                                                           --  es ist ein Swipe
                   else                                                                      --  es ist ein Klick
                      beep                                                          --  oder tu was nützliches :)
                   end if
                end mouseUp

                Variante:
                Du merkst Dir im „mouseDown“ die „milliseconds“, und nur wenn bis zum „mouseUp“ eine bestimmte Zeit (300 ms?) verstrichen ist, ist es ein echter Klick.

                Viel Spaß!

              • #25734
                Jochen
                Teilnehmer

                  Hallo „Axwald“,

                  vielen Dank für deine Lösungen. Ich habe mich für die Variante mit der Position entschieden und es klappt. Wenn man weiß wie, ist es manchmal ganz einfach…

                  Grüße
                  Jochen

              Ansicht von 5 Antwort-Themen
              • Du musst angemeldet sein, um auf dieses Thema antworten zu können.