Worte im Textfeld durch einfachen Klick markiere

Startseite Foren Deutsches LiveCode-Forum Worte im Textfeld durch einfachen Klick markiere

Ansicht von 6 Antwort-Themen
  • Autor
    Beiträge
    • #47821
      Peter_M
      Teilnehmer

        Hallo Forum,

        ich möchte Worte in einem Textfeld  –  statt wie vorgegeben per Doppelklick –   durch einfachen Mausklick selektieren. Ist das per LiveCode möglich?

        Viele Grüße

        Peter

         

      • #47822
        Klaus Major
        Administrator

          Hi Peter,

          nein, das geht nicht, da bearbeitbare Felder keine „mouseup“ Message erhalten und
          die „mousedown“ Message nur bei gedrückter RECHTER Maustaste (pButtonNumber = 3)
          gesendet wird. Um z.B. ein Kontextmenü aufklappen zu lassen.

          Gruß

          Klaus

        • #47823
          sardus
          Teilnehmer

            Hallo Peter

            Ich weiss nicht, ob du so etwas meinst …

            Du könntest dir das „einfache“ Anklicken (oder Tippen auf dem Tablet) auch zusammenbauen. Dazu brauchst du ein Feld „Textfeld“ und eine Variable „Woerterliste“:

            on mouseup
            
            global gWoerterliste
            
            -- Hintergrundfarbe des angecklickten Wortes ändern
            if the clickText is not among the words of gWoerterliste then
            
            -- Hintergrundfarbe setzen Wort in Liste aufnehmen
            set the backgroundcolor of the clickText to red
            put the clickText after gWoerterliste
            
            else
            
            -- Hintergrundfarbe entfernen
            set the backgroundcolor of the clickText to empty
            
            -- Wort aus Liste entfernen
            put wordOffset(the clickText, gWoerterliste) into WortNummer
            delete word WortNummer of gWoerterliste
            
            end if
            
            end mouseup
            

            Das Handling der Wörter (markiert oder nicht) übernimmt die Variable „gWoerterliste“.

          • #47824
            Peter_M
            Teilnehmer

              Danke Klaus, das habe ich bereits befürchtet. Deine Antwort erspart mir weiteres erfolgloses Herumprobieren. 

               

            • #47831
              Torsten
              Teilnehmer

                Hi  Peter,

                kannst Du den Kontext deiner Idee noch mehr ausführen, damit wir verstehen können, was Du genau vorhast:

                Du hast ja bisher viel für das Smartphone entwickelt, ist das dafür?

                Warum soll der Benutzer den Text auswählen, was passiert damit?

                 

                Liebe Grüße

                Torsten

                 

              • #47835
                Peter_M
                Teilnehmer

                  Hallo Klaus,
                  noch mal vielen Dank für deine Tipps. Hier meine Lösung für Handys zum Löschen von durch Kommata getrennten Elementen eines Textfeldes nach einfachem Tippen auf dieses. Der Löschvorgang selbst wird mittels eines Buttons „Löschen“ durchgeführt. Zunächst der Code für das Textfeld:

                  on selectionChanged
                     global ct
                     if the clickText is not among the words of ct then
                        set the backgroundcolor of the clickText to red
                        put the clickText into ct
                        enable btn"Löschen"
                     else
                        set the backgroundcolor of the clickText to white
                        put wordOffset(the clickText, ct) into WortNummer
                        delete word WortNummer of ct
                        disable btn"Löschen"
                     end if
                  end selectionChanged
                  
                  

                  Hier der Code für den Button:

                  on mouseUp
                     global ct
                     disable me
                     set the itemDelimiter to ","
                     put  text of fld"Textfeld" into ek
                     put  itemOffset(ct,ek) into wn
                     delete item wn of ek
                     put ek into fld"Textfeld"
                    end mouseUp
                  

                  Dieser Code funktioniert. Entscheidend ist die Benutzung von „selectionChanged“ statt „mouseUp“, da letzterer Event nur mit auf dem Handy nicht möglichem Rechtsklick funktioniert.

                  Gruß
                  Peter

                • #47836
                  Peter_M
                  Teilnehmer

                    PS: Ich bin mir bewusst, dass mein Code derzeit noch korrekturbedürftig und optimierungswürdig (z.B. im Hinblick auf Mehrfachlöschungen) ist, komme aber aufgrund meiner sonstigen Verpflichtungen derzeit kaum zum Programmieren. Sobald der Code in diesem Sinne weiterentwickelt ist, werde ich ihn an dieser Stelle veröffentlichen.

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