Uso dei formulari

From Apache OpenOffice Wiki
Jump to: navigation, search


I formulari di Apache OpenOffice possono contenere campi di testo, caselle di riepilogo, pulsanti di scelta e una serie di altri elementi di controllo, che vengono inseriti direttamente in un testo o in un foglio elettronico. Per la modifica dei formulari viene utilizzata la barra dei simboli Funzioni formulario.

Un formulario di Apache OpenOffice può usufruire di una delle due modalità seguenti: bozza e visualizzazione. Nel primo caso, la posizione degli elementi di controllo può essere modificata e le relative proprietà modificate utilizzando una finestra delle proprietà.

Per passare da una modalità all'altra potete utilizzare anche la barra degli strumenti Funzioni formulario.

Determinazione degli oggetti formulario

Apache OpenOffice posiziona gli elementi di controllo di un formulario al livello degli oggetti di disegno. Si accede all'oggetto formulario dall'elenco Forms al livello disegno. Nei documenti di testo si accede agli oggetti nel modo seguente:

Dim Doc As Object
Dim DrawPage As Object
Dim Form As Object
 
Doc = StarDesktop.CurrentComponent
DrawPage = Doc.DrawPage
Form = DrawPage.Forms.GetByIndex(0)

Il metodo GetByIndex restituisce il formulario con il numero d'indice 0.

Quando si lavora con i fogli elettronici, è necessaria una fase intermedia tramite l'elenco Sheets perché i livelli di disegno non sono situati direttamente nel documento, ma nei singoli fogli:

Dim Doc As Object
Dim Sheet As Object
Dim DrawPage As Object
Dim Form As Object
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.GetByIndex(0)
DrawPage = Sheet.DrawPage
Form = DrawPage.Forms.GetByIndex(0)

Come suggerito dal nome del metodo GetByIndex un documento può contenere diversi formulari. Ciò risulta utile, ad esempio, se all'interno di un unico documento vengono visualizzati i contenuti di diversi database o se è visualizzata in un formulario una relazione di database 1:n. A tal fine è disponibile anche l'opzione di creare formulari secondari.

I tre aspetti degli elementi di controllo di un formulario

Gli elementi di controllo di un formulario sono composti da tre aspetti:

  • Il modello dell'elemento di controllo è l'oggetto chiave per il programmatore in Apache OpenOffice Basic che opera con gli elementi di controllo dei formulari.
  • La sua controparte è la vista dell'elemento di controllo, che gestisce le informazioni da visualizzare.
  • Dato che gli elementi di controllo dei formulari nei documenti vengono gestiti come un elemento di disegno di tipo speciale, esiste anche un oggetto forma che riflette le proprietà specifiche dell'elemento disegno dell'elemento di controllo (in particolare, la sua posizione e le dimensioni).

Accesso al modello degli elementi di controllo dei formulari

I modelli degli elementi di controllo di un formulario sono disponibili tramite il metodo GetByName di Object form:

Dim Doc As Object
Dim Form As Object
Dim Ctl As Object
 
Doc = StarDesktop.CurrentComponent
Form = Doc.DrawPage.Forms.GetByIndex(0)
Ctl = Form.getByName("MyListBox")

L'esempio determina il modello dell'elemento di controllo MyListBox, situato nel primo formulario del documento di testo attualmente aperto.

Se non si è certi dell'elemento di controllo, utilizzate l'opzione di ricerca in tutti i formulari per individuare l'elemento di controllo richiesto:

Dim Doc As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim I as Integer
 
Doc = StarDesktop.CurrentComponent
Forms = Doc.Drawpage.Forms
 
For I = 0 To Forms.Count - 1
  Form = Forms.GetbyIndex(I)
  If Form.HasByName("MyListBox") Then
    Ctl = Form.GetbyName("MyListBox")
    Exit Function
  End If
Next I

L'esempio utilizza il metodo HasByName per controllare tutti i formulari di un documento di testo per determinare se contengono un modello di elemento di controllo denominato MyListBox. Se viene individuato un modello corrispondente, il riferimento a questo modello viene salvato nella variabile Ctl e la ricerca è terminata.

Accesso alla vista degli elementi di controllo dei formulari

Per accedere alla vista degli elementi di controllo di un formulario, è necessario prima disporre del modello associato. La vista dell'elemento di controllo può essere determinata con l'ausilio del modello e utilizzando il controller del documento.

Dim Doc As Object
Dim DocCrl As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim CtlView As Object
Dim I as Integer
 
Doc = StarDesktop.CurrentComponent
DocCrl = Doc.getCurrentControler()
Forms = Doc.Drawpage.Forms
 
For I = 0 To Forms.Count - 1
  Form = Forms.GetbyIndex(I)
  If Form.HasByName("MyListBox") Then
    Ctl = Form.GetbyName("MyListBox")
    CtlView = DocCrl.GetControl(Ctl)
    Exit Function
  End If
Next I

Il codice riportato nell'esempio è molto simile al codice dell'esempio precedente per determinare un modello di elemento di controllo. Utilizza non solo l'oggetto documento Doc ma anche l'oggetto controller DocCrl del documento che fa riferimento alla finestra del documento corrente. Con l'ausilio di questo oggetto controller e del modello dell'elemento di controllo, utilizza il metodo GetControl per determinare la vista (variabile CtlView) degli elementi di controllo dei formulari.

Accesso all'oggetto forma degli elementi di controllo dei formulari

Il metodo per accedere agli oggetti forma di un elemento di controllo si avvale anche del livello disegno corrispondente del documento. Per determinare uno speciale elemento di controllo, occorre eseguire una ricerca tra tutti gli elementi del livello disegno.

Dim Doc As Object
Dim Shape as Object
Dim I as integer
 
Doc = StarDesktop.CurrentComponent
 
For i = 0 to Doc.DrawPage.Count - 1
  Shape = Doc.DrawPage(i)
  If HasUnoInterfaces(Shape, "com.sun.star.drawing.XControlShape") Then
    If Shape.Control.Name = "MyListBox" Then
      Exit Function
    End If
  End If
Next

L'esempio controlla tutti gli elementi di disegno per determinare se supportano l'interfaccia com.sun.star.drawing.XControlShape necessaria per gli elementi di controllo dei formulari. In caso positivo, la proprietà Control.Name controlla se il nome dell'elemento di controllo è MyListBox. Se sì, la funzione termina la ricerca.

Determinazione delle dimensioni e della posizione degli elementi di controllo

Come menzionato in precedenza, è possibile determinare le dimensioni e la posizione degli elementi di controllo utilizzando l'oggetto shape. La forma dell'elemento di controllo, come molti altri oggetti shape, fornisce a tal fine le proprietà Size e Position:

Size (struct)
Dimensioni dell'elemento di controllo (struttura di dati com.sun.star.awt.Size)
Position (struct)
Posizione dell'elemento di controllo (struttura di dati com.sun.star.awt.Point)

L'esempio seguente mostra come impostare la posizione e le dimensioni di un elemento di controllo utilizzando l'oggetto forma associato:

Dim Shape As Object
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Shape.Size = Size
Shape.Position = Point

Perché il codice funzioni, l'oggetto shape dell'elemento di controllo deve già essere noto. In caso contrario, dovrete determinarlo utilizzando il codice di cui sopra.

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools