Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20.6
SET PRINT MARKER
|
SET PRINT MARKER ( MarkeNum ; MarkePos {; *} ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
MarkeNum | Lange Ganzzahl |
![]() |
Nummer der Marke | |||||
MarkePos | Lange Ganzzahl |
![]() |
Neue Position der Marke | |||||
* | Operator |
![]() |
Mit Angabe = Nachfolgende Marke bewegen Ohne Angabe = Nachfolgende Marke nicht bewegen |
|||||
Der Befehl SET PRINT MARKER definiert die Position der Marke während des Druckvorgangs. In Kombination mit den Befehlen Get print marker und OBJECT MOVE können Sie die Größe des Druckbereichs einstellen.
SET PRINT MARKER lässt sich in zwei Kontexten verwenden:
Die Auswirkung des Befehls beschränkt sich auf das Drucken; auf dem Bildschirm erscheint keine Änderung. In Formularen gemachte Änderungen werden nicht gesichert.
Im Parameter MarkeNum setzen Sie eine Konstante aus dem Thema Formularbereich ein:
Konstante | Typ | Wert |
Form break0 | Lange Ganzzahl | 300 |
Form break1 | Lange Ganzzahl | 301 |
Form break2 | Lange Ganzzahl | 302 |
Form break3 | Lange Ganzzahl | 303 |
Form break4 | Lange Ganzzahl | 304 |
Form break5 | Lange Ganzzahl | 305 |
Form break6 | Lange Ganzzahl | 306 |
Form break7 | Lange Ganzzahl | 307 |
Form break8 | Lange Ganzzahl | 308 |
Form break9 | Lange Ganzzahl | 309 |
Form detail | Lange Ganzzahl | 0 |
Form footer | Lange Ganzzahl | 100 |
Form header | Lange Ganzzahl | 200 |
Form header1 | Lange Ganzzahl | 201 |
Form header10 | Lange Ganzzahl | 210 |
Form header2 | Lange Ganzzahl | 202 |
Form header3 | Lange Ganzzahl | 203 |
Form header4 | Lange Ganzzahl | 204 |
Form header5 | Lange Ganzzahl | 205 |
Form header6 | Lange Ganzzahl | 206 |
Form header7 | Lange Ganzzahl | 207 |
Form header8 | Lange Ganzzahl | 208 |
Form header9 | Lange Ganzzahl | 209 |
In MarkePos geben Sie die gewünschte neue Position der Marke in Pixel an.
Ist der optionale Parameter * übergeben, werden alle Marken, die auf die in MarkeNum angegebene Marke folgen, dieselbe Anzahl Pixel und in dieselbe Richtung bewegt.
Achtung: In diesem Fall werden alle darunter liegenden Objekte ebenfalls bewegt.
Mit dem Parameter * können Sie die Position der Marke MarkeNum über die ursprüngliche Position nachfolgender Marken bewegen — nachfolgende Marken werden simultan verschoben.
Hinweise:
Dieses Beispiel generiert einen dreispaltigen Bericht, die Zeilenhöhe wird je nach Feldinhalt on-the-fly berechnet.
Das Ausgabeformular für den Druck sieht folgendermaßen aus:
Für das Formular wurde das Formularereignis On Printing Detail gewählt.
Zur Erinnerung: Es spielt keine Rolle, welcher Bereich gedruckt wird. Die Funktion Print form generiert nur diese Art von Formularereignis.
Die Zeilenhöhe muss für jeden Datensatz angepasst werden an die Spalten “Actors” oder “Summary”. Das Ergebnis sieht folgendermaßen aus:
Die Projektmethode für Drucken sieht folgendermaßen aus:
C_LONGINT(vLprint_height;$vLheight;vLprinted_height)
C_STRING(31;vSprint_area)
PAGE SETUP([Film];"Print_List3")
GET PRINTABLE AREA(vLprint_height)
vLprinted_height:=0
ALL RECORDS([Film])
vSprint_area:="Header" //Kopfbereich drucken
$vLheight:=Print form([Film];"Print_List3";Form header)
$vLheight:=21 //Feste Höhe
vLprinted_height:=vLprinted_height+$vLheight
While(Not(End selection([Film])))
vSprint_area:="Detail" `Detailbereich drucken
$vLheight:=Print form([Film];"Print_List3";Form detail)
`Detailberechnung wird in der Formularmethode ausgeführt
vLprinted_height:=vLprinted_height+$vLheight
If(OK=0) `CANCEL wurde in der Formularmethode ausgeführt
PAGE BREAK
vLprinted_height:=0
vSprint_area:="Header" `Kopfbereich erneut drucken
$vLheight:=Print form([Film];"Print_List3";Form header)
$vLheight:=21
vLprinted_height:=vLprinted_height+$vLheight
vSprint_area:="Detail"
$vLheight:=Print form([Film];"Print_List3";Form detail)
vLprinted_height:=vLprinted_height+$vLheight
End if
NEXT RECORD([Film])
End while
PAGE BREAK `Sicherstellen, dass die letzte Seite gedruckt wird
Die Formularmethode Print_List3 lautet:
C_LONGINT($l;$t;$r;$b;$fixed_wdth;$exact_hght;$l1;$t1;$r1;$b1)
C_LONGINT($final_pos;$i)
C_LONGINT($detail_pos;$header_pos;$hght_to_print;$hght_remaining)
Case of
:(vSprint_area="Detail") `Detailbereich wird gedruckt
OBJECT GET COORDINATES([Film]Actors;$l;$t;$r;$b)
$fixed_wdth:=$r-$l `Berechnet die Größe des Textfeldes Actors
$exact_hght:=$b-$t
OBJECT GET BEST SIZE([Film]Actors;$wdth;$hght;$fixed_wdth)
`Größe des Feldes wird passend zum Inhalt optimiert
$movement:=$hght-$exact_hght
OBJECT GET COORDINATES([Film]Summary;$l1;$t1;$r1;$b1)
$fixed_wdth1:=$r1-$l1 `Berechnet die Größe des Textfeldes Summary
$exact_hght1:=$b1-$t1
OBJECT GET BEST SIZE([Film]Summary;$wdth1;$hght1;$fixed_wdth1)
`Größe des Feldes wird passend zum Inhalt optimiert
$movement1:=$hght1-$exact_hght1
If($movement1>$movement)
`Das höchste Feld festlegen
$movement:=$movement1
End if
If($movement>0)
$position:=Get print marker(Form detail)
$final_pos:=$position+$movement
`Die Marke Detail und nachfolgende Marken bewegen
SET PRINT MARKER(Form detail;$final_pos;*)
`Textbereiche anpassen
OBJECT MOVE([Film]Actors;$l;$t;$r;$hght+$t;*)
OBJECT MOVE([Film]Summary;$l1;$t1;$r1;$hght1+$t1;*)
`Trennlinien anpassen
OBJECT GET COORDINATES(*;"H1Line";$l;$t;$r;$b)
OBJECT MOVE(*;"H1Line";$l;$final_pos-1;$r;$final_pos;*)
For($i;1;4;1)
OBJECT GET COORDINATES(*;"VLine"+String($i);$l;$t;$r;$b)
OBJECT MOVE(*;"VLine"+String($i);$l;$t;$r;$final_pos;*)
End for
End if
`Verfügbaren Platz berechnen
$detail_pos:=Get print marker(Form detail)
$header_pos:=Get print marker(Form header)
$hght_to_print:=$detail_pos-$header_pos
$hght_remaining:=printing_height-vLprinted_height
If($hght_remaining<$hght_to_print) `Höhe ist zu gering
CANCEL `Formular auf die nächste Seite setzen
End if
End case
Get print marker
OBJECT GET BEST SIZE
OBJECT GET COORDINATES
OBJECT MOVE
PAGE BREAK
Print form
PRINT RECORD
PRINT SELECTION
Produkt: 4D
Thema: Drucken
Nummer:
709
Geändert: 4D 2003
4D Programmiersprache ( 4D v20)
4D Programmiersprache ( 4D v20.1)
4D Programmiersprache ( 4D v20.2)
4D Programmiersprache ( 4D v20.3)
4D Programmiersprache ( 4D v20.4)
4D Programmiersprache ( 4D v20.5)
4D Programmiersprache ( 4D v20.6)