Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
WP Get position

WP Get position 


 

WP Get position ( targetObj {; layout} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
targetObj  Objekt in Range, Element oder 4D Write Pro Dokument
layout  Lange Ganzzahl in Layout des 4D Write Pro Dokuments für die Bewertung: 0 (Standard)= 4D Write Pro Layout, 1 = HTML WYSIWYG
Funktionsergebnis  Objekt in Angabe der Position

Der Befehl WP Get position gibt ein Objekt mit der aktuellen Position von targetObj zurück.

Im Parameter targetObj übergeben Sie:

  • "Range" oder
  • Element (Tabelle, Zeile, Absatz, Kopf-, Haupt-, Fußteil, Bild, Abschnitt, Unterabschnitt / Textfeld) oder
  • 4D Write Pro Dokument

Der Befehl gibt die Positionsangaben in einem Objekt mit den folgenden Eigenschaften zurück:

Name der EigenschaftTypBeschreibung
sectionZahlNummer des ersten Abschnitts, der targetObj überschneidet.
pageZahlNummer der ersten Seite, die targetObj überschneidet.
columnZahlNummer der ersten Spalte, die targetObj überschneidet. (auf 1 basierend)
lineZahlIndex der ersten Zeile, die targetObj überschneidet. (relativ zur Spalte - oder Seite, falls es keine Spalte gibt - auf 1 basierend)
positionZahlPosition in der Zeile mit dem ersten Zeichen targetObj (auf 1 basierend)
boundsObjektKoordinaten des Begrenzungsrechtecks von targetObj, dargestellt in der aktuellen Größe des Dokuments und relativ zur oberen linken Ecke von page. Größe von Einrückung und Rahmen (falls vorhanden) werden berücksichtigt, Ränder und Lineale werden nicht berücksichtigt.
topZahlObere Koordinate des Rechtecks
leftZahlLinke Koordinate des Rechtecks
bottomZahlUntere Koordinate des Rechtecks
rightZahlRechte Koordinate des Rechtecks
rangeHeightZahlHöhe des Begrenzungsrechtecks von targetObj. Dieser Wert kann sich von bounds.bottom-bounds.top unterscheiden, wenn targetObj über mehrere Spalten geht (siehe Beispiel 4).

Ist targetObj ein leerer Bereich, gibt WP Get position die Position am Anfang des "Range" zurück. Beachten Sie, dass bei einem leeren Range des Standardtyps (Text) die Range-Höhe (rangeHeight oder bounds.bottom-bounds.top) der Cursorhöhe entspricht und die Range-Breite (bounds.right-bounds.left) 1 Pixel beträgt. 
Ist targetObj ein Text im Kopf- oder Fußteil, gibt WP Get position die Position zurück, wo Kopf- und Fußzeile im ersten Abschnitt/Seite angezeigt werden.
Ist targetObj ein verankertes Bild (das auf mehreren Seiten wiederholt werden kann), gibt WP Get position die Position zurück, wo das Bild im ersten Abschnitt/Seite verankert ist.
Ist targetObj ein Unterabschnitt, gibt WP Get position die Positionsinformationen der ersten Seite des übergeordneten Abschnitts zurück.

Mit dem optionalen Parameter Layout kann die HTML wysiwyg Ansicht für die targetObj Bewertung gesetzt werden. Sie können eine der folgenden Konstanten aus dem Thema "4D Write Pro" übergeben:

Konstante Typ Wert Kommentar
wk 4D Write Pro layout Lange Ganzzahl 0 Standardmäßige 4D Write Pro Ausgabe mit ein paar spezifischen Stilattributen 
wk html wysiwyg Lange Ganzzahl 1 In dieser Ausgabe werden die erweiterten 4D Write Pro Attribute entfernt, die nicht mit allen Browsern kompatibel sind.

Ohne den Parameter layout wird standardmäßig das 4D Write Pro Layout verwendet.

Hinweise zur Performance

  • WP Get position verwendet die gleichen Einstellungen zur Anzeige wie der Befehl WP PRINT:
    • Kopfteile: sichtbar
    • Fußteile: sichtbar
    • Ausdrücke: berechnet und angezeigt
    • Seitenmodus: Seite oder Draft (HTML wysiwyg Ansicht, wie vom Befehl definiert.
    Wenn targetObj in einem 4D Write Pro Formularbereich angezeigt wird, stellen Sie sicher, dass die Anzeigeeinstellungen des Bereichs mit den Anzeigeeinstellungen für den Befehl übereinstimmen, um konsistente Informationen zu erhalten. Bei unterschiedlichen Einstellungen muss 4D Write Pro das Dokument "klonen", um das Layout bei jedem Aufruf des Befehls zu berechnen, was zeitaufwändig sein kann. Aus Performance-Gründen empfiehlt es sich in diesem Fall, das Dokument erst offline zu erstellen und anschließend in das Objekt Formularbereich zu kopieren.
  • Dieser Befehl sollte nicht innerhalb von häufig generierten Ereignissen aufgerufen werden (z.B. On After Edit), da result.rangeHeight Zeit für Bewertungen verbraucht, die nach jedem Aufruf des Ereignisses durchgeführt werden müssen.

Sie möchten die Seitennummer von "Range" wissen:

 C_OBJECT($range;$rangePosition)
 $range:=WP Text range(WParea) //Range aus einer Benutzerauswahl
 $rangePosition:=WP Get position($range;wk 4D Write Pro layout)
 ALERT("First page number in selection is "+String($rangePosition.page))

Sie möchten den Text auf der ersten und letzten Seite des Dokuments blau einfärben:

 C_LONGINT($nbPages)
 C_OBJECT($body)
 C_COLLECTION($_paragraphs)
 
 $nbPages:=WP Get page count([DOC]Sample)
 $body:=WP Get body([DOC]Sample)
 $_paragraphs:=WP Get elements($body;wk type paragraph)
 For each($paragraph;$_paragraphs)
    $info:=WP Get position($paragraph)
    If($info.page=1)|($info.page=$nbPages//Abschnitte der ersten und letzten Seite in blau
       WP SET ATTRIBUTES($paragraph;wk text color;"blue")
    Else //Abschnitte anderer Seiten in schwarz
       WP SET ATTRIBUTES($paragraph;wk text color;"black")
    End if
 End for each

Beim Erstellen eines Dokuments möchten Sie Aufteilungen in Absätze vermeiden:

 C_OBJECT(WParea;$body)
 C_COLLECTION($_paragraphs)
 WParea:=WP New
 
 $body:=WP Get body([DOC]Sample)
 $_paragraphs:=WP Get elements($body;wk type paragraph)
 
 For each($paragraph;$_paragraphs)
    $insert:=WP New($paragraph)
 
  //aktuellen Bereich und Seitenzahl speichern
    $rangeBefore:=WP Text range(WParea;wk end text;wk end text)
    $info:=WP Get position($rangeBefore)
    $memoPage:=$info.page
 
  //den Inhalt einfügen, den Bereich unverändert lassen
    WP INSERT DOCUMENT($rangeBefore;$insert;wk append;wk exclude from range)
 
  //Position nach dem Einsetzen prüfen
    $rangeAfter:=WP Text range(WParea;wk end text;wk end text)
    $info:=WP Get position($rangeAfter)
 
    If($memoPage#$info.page) // Wenn sich die Seite geändert hat, einen Seitenumbruch einfügen.
       WP INSERT BREAK($rangeBefore;wk page break;wk replace)
    End if
 
 End for each

Dieses Beispiel zeigt das zurückgegebene Rechteck mit den Begrenzungskoordinaten, angegeben in targetObj.

 $default:=WP Text range(WPArea) //Standard (Text) Range
 $textCoordinates:=WP Get position($default//rote gestrichelte Linie
 
 $paragraph:=WP Create paragraph range($default//Absatz Range
 $paraCoordinates:=WP Get position($paragraph// grüne gestrichelte Linie

Rote gestrichelte Linie: $textCoordinates Objektwerte
Grüne
gestrichelte Linie: $paraCoordinates Objektwerte

Hinweis: Werden mehrere Spalten angezeigt, kann die Eigenschaft rangeHeight (volle Linien) größer sein als bounds.bottom-bounds.top (gestrichelte Linien):




Siehe auch 

WP PRINT

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: 4D Write Pro Programmiersprache
Nummer: 1577

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v17
Geändert: 4D v17 R3
Geändert: 4D v17 R4

 
ARTIKELVERWENDUNG

4D Write Pro Handbuch ( 4D v20 R7)