4D v16.3

OBJECT DUPLICATE

Home

 
4D v16.3
OBJECT DUPLICATE

OBJECT DUPLICATE 


 

OBJECT DUPLICATE ( {* ;} Objekt {; NeuerName {; NeueVar {; GehenZu {; BewegenH {; BewegenV {; AnpassenH {; AnpassenV}}}}}}} {; *} )  
Parameter Typ   Beschreibung
Operator in Mit Stern: Objekt ist ein Objektname (String),
Ohne Stern: Objekt ist Variable oder Feld
Objekt  Formularobjekt in Objektname (mit *) oder Variable bzw. Feld (ohne *)
NeuerName  Text in Name des neuen Objekts
NeueVar  Zeiger in Zeiger auf Variable des neuen Objekts
GehenZu  Text in Name des vorigen eingebbaren Objekts (oder Optionsfeld)
BewegenH  Lange Ganzzahl in Horizontales Versetzen des neuen Objekts(>0 = nach rechts, <0 = nach links)
BewegenV  Lange Ganzzahl in Vertikales Versetzen des neuen Objekts (>0 = nach unten, <0 = nach oben)
AnpassenH  Lange Ganzzahl in Horizontale Anpassung des neuen Objekts
AnpassenV  Lange Ganzzahl in Vertikale Anpassung des neuen Objekts
Operator in Mit Stern = absolute Koordinaten
Ohne Stern = relative Koordinaten

Der Befehl OBJECT DUPLICATE erstellt eine Kopie des Objekts, definiert im Parameter Objekt. Die Kopie wird im Kontext des ausgeführten Formulars erstellt (Anwendungsmodus). Das Ausgangsformular im Designmodus wird nicht verändert.
Standardmäßig werden alle Optionen, die für das Ausgangsdokument in der Eigenschaftenliste angegeben werden, auf die Kopie angewendet (Größe, Farbe, etc.), inkl. einer zugewiesenen Objektmethode.

Es gibt jedoch folgende Ausnahmen:

  • Standardschaltfläche: Im Formular ist nur eine Standardschaltfläche möglich. Duplizieren Sie eine Schaltfläche mit der Eigenschaft "Standardschaltfläche", wird diese Eigenschaft der Kopie zugewiesen und aus dem Ausgangsdokument entfernt.
  • Tastenkombinationen: Ist einem Ausgangsobjekt ein Tastenkürzel zugewiesen, wird es nicht dupliziert. Diese Eigenschaft bleibt in der Kopie leer.
  • Objektnamen: In einem Formular kann es nicht mehrere Objekte mit demselben Namen geben. Übergeben Sie nicht den Parameter NeuerName, wird der Name des Ausgangsobjekts im neuen Objekt automatisch numeriert bzw. um 1 erhöht (siehe unten).

Mit dem optionalen Parameter * geben Sie an, dass der Parameter Objekt ein Objektname ist (String). Ohne diesen Parameter geben Sie an, dass Objekt ein Feld oder eine Variable ist. In diesem Fall übergeben Sie ein Feld oder eine Variablenreferenz (nur Objektfeld oder -variable) anstelle eines String.
Übergeben Sie eine Feld- oder Variablenreferenz und enthält das Formular mehrere Objekte, die dieselbe Referenz nutzen, wird das erste gefundene Auftreten verwendet. Um Zweideutigkeiten zu vermeiden, empfehlen wir, einmalige Objektnamen zu verwenden.

Im Parameter NeuerName übergeben Sie den Namen für die Kopie eines Objekts. Er muss die Namensregeln für Objekte beachten und im Formular einmalig sein. Ist er ungültig oder wird bereits von einem anderen Objekt verwendet, führt der Befehl nichts aus und die Variable OK gibt 0 (Null) zurück.
Lassen Sie diesen Parameter weg oder übergeben einen leeren String, wird der neue Name automatisch durch Nummerierung des Namens des Ausgangsdokuments erzeugt, außer er wird bereits verwendet.

Hier ein paar Beispiele:

AusgangsnameName der Kopie
ButtonButton1
Button20Button21
Button21Button23 wenn Button22 bereits existiert

Übergeben Sie einen Zeiger auf die Variable, die dem neuen Objekt in NeueVar übergeben wird. Dabei müssen Sie beachten, dass Sie auf eine Variable verweisen, die vom gleichen Typ wie die des Ausgangsobjekts ist. Bestimmte Arten von "Neutypisierung" sind jedoch möglich. Der Befehl bietet eine automatische Vorgehensweise, um das Schreiben von generischem Code zu vereinfachen:

  • In der Regel lassen sich alle eingebbaren Variablen neu typisieren; z.B. kann ein Objekt mit Datum oder Ganzzahl dupliziert und mit einer Variablen vom Typ Text verwendet werden. Alle kompatiblen Eigenschaften werden beibehalten. Der Befehl ermöglicht auch, die Typen zwischen Text- und Bildobjekten zu wechseln. Beachten Sie, dass ein Textobjekt, das dupliziert und einer Variablen bzw. Feld vom Typ Boolean zugewiesen wird, automatisch als Optionsfeld erscheint.
  • Sie können in der Regel eine Variable dynamisch in ein Feld und umgekehrt umwandeln
    Dagegen lassen sich grafische Objekte, wie Schaltflächen, Optionsfelder, etc. nicht in andere Typen zur Steuerung umwandeln.

Ist der Variablentyp nicht kompatibel mit dem Objekt, führt der Befehl nichts aus und die Variable OK wird auf 0 (Null) gesetzt.
Lassen Sie diesen Parameter weg, erstellt 4D die Variable dynamisch. Bei einigen Objekttypen wird diese Variable automatisch deklariert (sofern durch das Objekt bestimmt), bei anderen wird der Typ durch die erste Zuweisung bestimmt. Weitere Informationen dazu finden Sie im Abschnitt Dynamische Variablen. Duplizieren Sie ein statischen Objekt, z.B. Linie, Rechteck, statisches Bild, wird dieser Parameter ignoriert. Übergeben Sie einen Nil-Pointer (z. B. nicht initialisierte Pointer-Variable), wenn Sie die Möglichkeit haben wollen, die anderen Parameter zu benutzen.

Den Parameter GehenZu verwenden Sie in zwei Fällen:

  • Update der Eingabereihenfolge: In diesem Fall übergeben Sie in GehenZu den Namen es eingebbaren Objekts just vor dem duplizierten Objekt. Soll das neue Objekt in der Eingabereihenfolge der Seite das erste Objekt werden, übergeben Sie die Konstante Object First in entry order (siehe Befehl OBJECT Get pointer).  
  • Zuweisung zu einer Gruppe Optionsfelder: Optionsfelder funktionieren in koordinierter Form, wenn sie gruppiert sind. Ist das duplizierte Objekt ein Optionsfeld, übergeben Sie in GehenZu den Namen des Optionsfeldes der Gruppe, dem das neue Objekt hinzugefügt werden soll.

Lassen Sie diesen Parameter weg oder übergeben einen leeren String, wird das neue Objekt das letzte eingebbare Objekt auf der Formularseite.

Über die Parameter BewegenH, BewegenV und AnpassenH, AnpassenV lässt sich das neue Objekt bewegen und in der Größe verändern. Wie beim Befehl OBJECT MOVE wird die Richtung zum Bewegen oder Anpassen durch die Vorzeichen der in BewegenH und BewegenV übergebenen Werte bestimmt:

  • Bei einem positivem Wert wird das Objekt nach rechts oder unten bewegt bzw. angepasst.
  • Bei einem negativen Wert wird das Objekt nach links oder unten bewegt bzw. angepasst.
Die Werte von BewegenH, BewegenV und AnpassenH, AnpassenV ändern die Koordinaten des Objekts in Bezug auf seine vorige Position. Wollen Sie für diese Parameter absolute Koordinaten angeben, übergeben Sie den letzten Parameter *.
Lassen Sie diese Parameter weg, wird das neue Objekt über dem Ausgangsobjekt angelegt.

Dieser Befehl muss im Rahmen einer Formularanzeige verwendet werden. Er wird in der Regel im Formularereignis On Load oder als Folge einer Benutzeraktion (Formularereignis On Clicked) aufgerufen.

Hinweis: Ist das Formularereignis On Load dem Ausgangsobjekt zugewiesen, wird es beim Ausführen des Befehls für das duplizierte Objekt erzeugt. So lässt sich z.B. der Wert des Objekts initialisieren. 

Aus technischen und logischen Gründen lässt sich OBJECT DUPLICATE in folgenden Formularereignissen nicht aufrufen:

  • On Load in einer Objektmethode
  • On Unload
  • Ereignis im Kontext Drucken (On Header, On Printing Detail, etc.). Um ein Objekt mehrmals zu drucken, verwenden Sie besser die Funktion Print object.

Wird der Befehl in einem nicht unterstützten Kontext aufgerufen, wird das Objekt nicht dupliziert und die Systemvariable OK wird auf 0 gesetzt. Bei Aufrufen in einem Druckkontext wird auch der Fehler -10601 aufgerufen.

Wurde der Befehl korrekt ausgeführt, wird die Variable OK auf 1 gesetzt, andernfalls auf 0 (Null).

Eine neue Schaltfläche "CancelButton" über dem vorhandenen Objekt "OKButton" anlegen und der Variablen vCancel zuweisen:

 OBJECT DUPLICATE(*;"OKButton";"CancelButton";vCancel)

Ein neues Optionsfeld "bRadio6" auf Basis des vorhandenen Optionsfeldes "bRadio5" anlegen. Diese Schaltfläche wird der Variablen <>r6 zugewiesen, in die Gruppe von "bRadio5" integriert und 20 Pixel höher gesetzt:

 OBJECT DUPLICATE(*;"bRadio5";"bRadio6";<>r6;"bRadio5";0;20)



Siehe auch 

Formularobjekte (Zugriff)
OBJECT Get pointer
OBJECT MOVE

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Objekte (Formulare)
Nummer: 1111

Dieser Befehl ändert die Systemvariable OK

 
GESCHICHTE 

Erstellt: 4D v12

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)