Sortieren von "highlited lines" eines Datagrids

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

Schlagwörter: 

Dieses Thema enthält 1 Antwort und 2 Teilnehmer. Es wurde zuletzt aktualisiert von  Klaus Major vor 6 Monate, 2 Wochen.

  • 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
    Moderator

    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

Du musst angemeldet sein, um auf dieses Thema antworten zu können.