Scopo
Questa proprietà indica di quanto occorre ruotare la box. Il sistema gestisce la rotazione solo se il book viene stampato su PDF. L'unità di misura è gradi sessaggesimali e un valore positivo rappresenta una rotazione in senso antiorario. Il sistema effettua la rotazione rispetto al centro della box come mostrato nell'immagine:

Rotazione della box. Nell'immagine la box verde è stata ruotata di 30°.
Sintassi
//
Alfa := Book.Box.Rotation
Quando letta
Ritorna un valore che indica di quanti gradi occorre ruotare la box.
Quando impostata
Indica di quanti gradi occorre ruotare la box.
Note
- Normalmente la proprietà Rotation viene valorizzata all'interno degli eventi di formattazione dell'oggetto che contiene la box per ruotare la singola copia della box.
- Attenzione: Se la proprietà Rotation viene modificata all'interno degli eventi di formattazione dell'oggetto che contiene la box (evento OnFormatting della pagina se la box è contenuta nella pagina o evento di BeforeFormatting della sezione se la box è contenuta in una sezione) la modifica ha effetto solo sulla box in fase di formattazione (consulta il videocorso Mastro On Formatting). Se la proprietà Rotation viene modificata al di fuori dagli eventi di formattazione dell'oggetto che contiene la box, da quel momento in poi tutte le copie della box avranno la proprietà Rotation valorizzata allo stesso modo. In quest'ultimo caso è come se alla proprietà Rotation fosse stato fornito tale valore a design-time.
- Se la proprietà Rotation viene modificata all'interno di una procedura legata alla box tale modifica ha effetto solo sulla box cliccata. Tale modifica equivale ad una modifica alla proprietà fatta all'interno degli eventi di formattazione dell'oggetto che contiene la box.
- Se viene modificata la proprietà Rotation durante gli eventi di formattazione dell'oggetto che contiene la box o durante la procedura collegata alla box non è necessario ristampare il book. Tale modifica avrà effetto immediato. Qualora, invece, la modifica sia fatta fuori dagli eventi di validazione e non all'interno della procedura collegata alla box potrebbe essere necessario ristampare il book utilizzando la procedura Refresh dello stesso.
Origine della rotazione
Il sistema ruota la box rispetto al centro della stessa. Qualora fosse necessario ruotare rispetto ad un punto differente, per esempio lo spigolo in alto a sinistra, è sufficiente traslare la box nell'evento OnFormatting della pagina se la box è contenuta nella pagina o evento di BeforeFormatting della sezione se la box è contenuta in una sezione, come mostrato in figura:

Traslazione da compiere sulla box prima che questa venga ruotata per far sì che appaia ruotata rispetto allo spigolo in alto a sinistra.
Il codice necessario per traslare la box è il seguente:
float Alfa := 30
//
// Angolo (negato perché la coordinata y è invertita su PDF)
float rad := --(Alfa * PI() / 180)
//
// Coordinate del centro rispetto al centro di rotazione
float cx := Libro.Box.Width / 2
float cy := Libro.Box.Height / 2
//
// Ruoto il centro rispetto al centro di rotazione
float new_cx := cx * Cos(rad) - cy * Sin(rad)
float new_cy := cx * Sin(rad) + cy * Cos(rad)
//
// Ora traslo la box
Libro.Box.Left := Libro.Box.Left + (new_cx - cx)
Libro.Box.Top := Libro.Box.Top + (new_cy - cy)
//
// Da ultimo effettuo la rotazione desiderata sulla box
Libro.Box.Rotation := Alfa
Le righe di codice mostrate sopra hanno il seguente significato: il sistema effettua la rotazione della box utilizzando il centro della box stessa come origine della rotazione. Per ruotare rispetto allo spigolo in alto a sinistra possiamo calcolare, fissando l'origine della rotazione alla su tale spigolo, dove finirebbe il centro della box se effettuassimo la rotazione dell'angolo desiderato. Le coordinate così ottenute sono quelle dove occorre spostare il centro della box. In questo modo quando il sistema ruota la box, utilizzando il centro della stessa come origine della rotazione, è come se la box fosse stata ruotata rispetto allo spigolo desiderato.
Vediamo ora il significato delle righe di codice:
- la prima riga serve a convertire l'angolo da gradi sessaggesimali a radianti da utilizzare per le funzioni Sin e Cos. Occorre invertire l'angolo dato che su PDF la coordinata Y parte dall'alto e cresce verso il basso.
- Poi occorre calcolare le coordinate del centro della box a partire dal punto rispetto al quale si desidera ruotare. Il sistema effettuerà la rotazione della box utilizzando questo punto. Se si desidera un punto differente è sufficiente calcolare le coordinate del centro della box a partire da tale punto.
- Ora viene effettuata la rotazione del punto indicato (centro della box calcolato rispetto al punto di rotazione).
- Infine viene traslata la box che deve essere ruotata.

Rotazione della box rispetto allo spigolo in alto a sinistra.
Esempio di codice
// Evento notificato da una pagina quando viene preparata per la stampa
// ********************************************************************
event ProdottiRotated.LibroProdotti.NuovaPaginaMastro.OnFormatting()
{
LibroProdotti.Watermark.Rotation := Dati.Angolo
}
Ultima modifica: 02/11/2022 / Validità: da 8.1.3650
proprietà