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
      Verwalter

      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.