Autor Thema: Listenfeld im Layoutbereich  (Gelesen 1458 mal)

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Listenfeld im Layoutbereich
« am: 21.12.11 - 09:12:47 »
Hallo,

Ich möchte gerne das Listenfeld manuell "sortieren".

Im Listenfeld stehen folgende Werte (in folgender Reihenfolge):

Bearbeitung
Eingabe
Fortführung
Kontrolle
Archiv

Das Listenfeld wird über ein Zusatzfeld befüllt = "Formel für Auswahl verwenden"

Nun würde ich gerne über einen Button z.B. den Wert "Eingabe" an erster Stelle oder auch 2 Stellen nach unten verschieben.

Ich kann natürlich die Liste zerlegen und in neuer Reihenfolge aufbauen. Aber gibt es nicht eine einfachere Lösung?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listenfeld im Layoutbereich
« Antwort #1 am: 21.12.11 - 11:52:46 »
Ich wüßte keine einfachere Lösung.

Mit @Member kannst Du die Position des markierten Elements und mit @Subset die Elemente davor und danach ermitteln, dann baust Du alles wieder zusammen.

Sinngemäß so (verschieben um eine Position nach oben)

Position ermitteln (@Member (Liste; Wert))
Elemente bis 1 vor Position (@Subset; Liste; Position - 1) : Wert : Alle Elemente ab 1 vor Position (@Subset mit negativem Vorzeichen, @Replace um Wert zu entfernen)

Offline Fineas

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • PCLP Dev/Admin 5,6,7,8
Re: Listenfeld im Layoutbereich
« Antwort #2 am: 21.12.11 - 12:01:18 »
Das Handling mit Listen ist die einfache Lösung.

Ansonsten kann man alternativ auf Script und Array-Funktionen setzten. Solange es nur um das hoch/runterschieben geht würde es genügen, innerhalb der Liste/des Arrays die Werte zu tauschen. Dafür ist es immer gut Vorgänger, Nachfolger, Start und Ende zu kennen. Listenschengelei ist Informatik-Grundlagenwissen. Wenn es um Start/Ende/Löschen/Hinzufügen geht, wird es spannender.

Das Ganze macht aber aus meiner Sicht nur und richtig Sinn, wenn die Liste nicht direkt aus einer Formel kommt, sondern die Anordnung in einem Feld gespeichert ist und über die "Schiebefunktion" manipuliert und dann refresht werden kann.

Immer eine coole Funktion wenn es um Listen und Formelsprache geht: @transform

zum Beispiel:

Schnellfix-Implementierung mit Mehrfachwerte-Feld "test", Formel auf eine Schaltfläche, in der Liste wird der Wert "3" nach oben durchgeschoben. Der Wert "3" läßt sich natürlich durch eine Variable ersetzen, sollte aber nur 1x vorkommen, sonst wirds bunt.

y := "";
z := "";
first := "";

resultlist := @Transform( test; "x"; @If(y = ""; @Do(y:= x; first := x; @Nothing); @If( x = "3";@Do( z := y;  y := x; y:z ); y = "3"; @Do(y:= x; @Nothing) ;@Do( z := y;  y := x; z ) ) ) ) ;

FIELD test := @If(  first = "3" & y = "3"; "3"; first = "3"; first : resultlist : y;  y = "3"; resultlist; resultlist : y ) ;

Gruß, Heiko
« Letzte Änderung: 21.12.11 - 14:30:33 von Fineas »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz