Sortieren von "highlited lines" eines Datagrids

Startseite Foren Deutsches LiveCode-Forum Sortieren von "highlited lines" eines Datagrids

Schlagwörter: 

Ansicht von 1 Antwort-Thema
  • Autor
    Beiträge
    • #10268
      Torsten
      Teilnehmer

        Hi,

        ich habe heute morgen eine Funktion gesucht, mit der man in Datagrids suchen kann und dieses toole Script gefunden:

        http://forums.livecode.com/viewtopic.php?t=20436#p109071

        Man postet dieses command in den Skript des Datagrids:

        command searchMe tString
           local tIndexList, tRecord, tHLIndexes
           put the dgIndexes of me into tIndexList
           repeat for each item tIndex in tIndexList
              put getDataOfIndex(tIndex) into tRecord
              repeat for each element tElement in tRecord
                 if tElement contains tString then 
                 put tIndex & comma after tHLIndexes
                 exit repeat
                 end if
              end repeat
           end repeat
           delete the last char of tHLIndexes
           set the dgHilitedIndexes of me to tHLIndexes
        end searchMe

        und kann die Suchfunktion dann z.B. über einen eigenen Button aufrufen:

        on mouseUp
           local tSearchString
           ask "Search Term?" 
           if it is not empty then put it into tSearchString
           dispatch "searchMe" to group "DataGrid1" with tSearchString
        end mouseUp

        Ergebnis ist, dass die Zeilen in denen das Suchwort auftaucht, gehighlited werden. Bei einer großen Tabelle sind diese aber ziemlich weit verstreut.

        Frage: gibt es eine Möglichkeit, dem Datagrid zu sagen, dass es die gehighliteten Zeilen nach oben sortiert?

        Beste Grüße
        Torsten

      • #10270
        Klaus Major
        Administrator

          Hi Torsten,

          Frage: gibt es eine Möglichkeit, dem Datagrid zu sagen, dass es die gehighliteten Zeilen nach oben sortiert?

          ja, einfach ein entsprechendes Skript ausführen! 😀

          Wenn es sich um ein Datagrid vom Typ TABLE handelt, kannst Du so etwas machen:

          ...
          ## Das mit dem zusätzlichen Hilite überlasse ich Dir, 
          ## sollte aber klar sein, oder!
          put the dgtext of group "xyz" into tText
          repeat for each line tLine in tText
            if offset(tSearchString,tLine) <> 0 then
               put tLine & CR after tZielenOben
            else
               put tLine & CR after tZeilenUnten
            end if
          delete char -1 of tZeilenOben
          delete char -1 of tZeilenUnten
          set the dgtext of grp "xyz" to tZeilenOben & CR & tZeilenUnten
          ..

          Logisch, wa? 😀

          Gruß

          Klaus

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