2.14 :exchange()

Die Methode :exchange() gibt es in zwei verschiedenen Ausprägungen:

2.14.1 :exchange() (Listenobjekte)

Mit Hilfe dieser Methode können zwei Zeilen bzw. Spalten des Inhalts eines Objektes miteinander vertauscht werden, wenn der Inhalt dieses Objekts aus mehreren, mit integer oder index indizierten, Einträgen besteht. Zusammen mit dem Inhalt werden auch die dazugehörenden Attribute getauscht.

Definition

boolean :exchange
(
      integer Position1 input,
      integer Position2 input
  { , boolean Direction := false input }
)

Parameter

integer Position1 input
integer Position2 input
Diese Parameter definieren die beiden Zeilen bzw. spalten, die miteinander vertauscht werden sollen.
boolean Direction := false input

Dieser optionale Parameter steuert beim tablefield, ob Zeilen oder Spalten vertauscht werden. Dies ist abhängig vom Wert des tablefield-Attributs .direction.

Der Parameter darf nur beim tablefield angegeben werden. Bei anderen Objekten als dem tablefield führt die Angabe des Parameters zu einem Fehler.

Wertebereich

false
Vertauschen entgegen der vom Attribut .direction angegebenen Richtung
true
Vertauschen in der vom Attribut .direction angegebenen Richtung

Damit werden beim tablefield folgende Inhalte vertauscht:

Parameter Direction

.direction 1 (vertikal)

.direction 2 (horizontal)

false

Zeile(n)

Spalte(n)

true

Spalte(n)

Zeile(n)

Rückgabewert

Die Methode gibt true zurück, wenn die Zeilen bzw. Spalten vertauscht werden konnten.

Wenn beim Vertauschen ein Fehler aufgetreten ist, gibt die Methode ein fail zurück.

Objekte mit dieser Methode

Beispiel

dialog D

window Wn
{
  .title "Beispiel fuer die Methode :exchange()";

  child treeview Tv
  {
    .content[1] "Firma A";
    .content[2] "Mueller";
    .content[3] "Mayer";
    .content[4] "Firma B";
    .content[5] "Schulz";
    .content[6] "Schmidt";
    .content[7] "Fischer";
    .style[style_lines]   true;
    .style[style_buttons] true;
    .style[style_root]    true;
    .level[2] 2;
    .level[3] 2;
    .level[5] 2;
    .level[6] 2;
    .level[7] 2;
  }

  child statictext St
  {
    .text "Selektieren Sie einen Mitarbeiter";
  }

  child pushbutton Pb
  {
    .text "Vertausche zwei Mitarbeiter";

    on select
    {
      if (Tv.activeitem > 1) then
        if (Tv.level[Tv.activeitem] = Tv.level[(Tv.activeitem - 1)]) then
          Tv:exchange(Tv.activeitem, (Tv.activeitem - 1));
          St.text := "Tausch ok";
        else
          St.text := "Oberer Partner ist eine Firma";
        endif
      else
        St.text := "Es gibt keinen oberen Partner";
      endif
    }
  }
}

2.14.2 :exchange() (Felder)

Mit Hilfe dieser Methode können zwei Elemente eines Feldes (indizierten, nicht-assoziativen, benutzerdefinierten Attributs) miteinander vertauscht werden.

Definition

boolean :exchange
(
  attribute Attr input,
  integer Position1 input,
  integer Position2 input
)

Parameter

attribute Attr input
Dieser Parameter definiert das benutzerdefinierte Attribut, auf das die Methode angewendet werden soll.
integer Position1 input
integer Position2 input

In diesen Parametern werden die Indizes der beiden Elemente übergeben, die miteinander vertauscht werden sollen.

Der Wertebereich für beide Parameter ist 0 … .count[Attr], d.h. es kann auch der Standardwert mit dem Wert eines anderen Elements vertauscht werden.

Rückgabewert

Die Methode gibt true zurück, wenn die Elemente vertauscht werden konnten.

Wenn beim Vertauschen ein Fehler aufgetreten ist, gibt die Methode ein fail zurück.

Objekte mit dieser Methode

Alle Objekte, die benutzerdefinierte Attribute haben können.

Siehe auch

Kapitel „Methoden für Arrays benutzerdefinierter Attribute“ im Handbuch „Benutzerdefinierte Attribute und Methoden“