Utilisation des formulaires

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


Les formulaires Apache OpenOffice peuvent contenir des champs de texte, des zones de liste, des boutons radio, ainsi que plusieurs autres éléments de contrôle, qui sont insérés directement dans un texte ou une feuille de calcul. La barre d'outils Contôles de formulaire permet d'éditer des formulaires.

Un formulaire Apache OpenOffice peut adopter l'un des deux modes suivants : le mode ébauche et le mode affichage. En mode ébauche, la position des éléments de contrôle peut être modifiée et leurs propriétés peuvent être éditées dans la fenêtre des propriétés.

L'icône (Dés)activer le mode ébauche de la barre d'outils Contrôles de formulaire permet également de passer d'un mode à l'autre.

Détermination de formulaires d'objet

Apache OpenOffice positionne les éléments de contrôle d'un formulaire au niveau du dessin de l'objet. L'objet formulaire réel est accessible par l'intermédiaire de la liste des formulaires au niveau du dessin. L'accès aux objets s'effectue de la façon suivante dans les documents texte :

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

La méthode GetByIndex retourne le formulaire portant le numéro d'index 0.

Lorsque vous utilisez des feuilles de calcul, une étape intermédiaire est nécessaire pour la liste des feuilles, car les niveaux de dessin ne se trouvent pas directement dans le document mais dans les feuilles individuelles :

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)

Comme le suggère le nom de la méthode GetByIndex, un document peut contenir plusieurs formulaires. Cela est utile si, par exemple, le contenu de différentes bases de données s'affiche dans un document ou si une relation de la base de données 1:n s'affiche dans un formulaire. L'option permettant de créer des sous-formulaires peut également être utilisée à cet effet.

Les trois aspects d'un élément de contrôle de formulaire

Un élément de contrôle d'un formulaire présente trois aspects :

  • Le modèle de l'élément de contrôle est, pour le programmeur Apache OpenOffice Basic, l'objet principal lors de l'utilisation des éléments de contrôle de formulaire.
  • Son équivalent est la vue de l'élément de contrôle, qui permet de gérer les informations d'affichage.
  • Dans la mesure où les éléments de contrôle de formulaire des documents sont gérés comme des éléments spéciaux du dessin, il existe également un objet Shape qui représente les propriétés spécifiques de l'élément de dessin figurant dans l'élément de contrôle (en particulier sa position et sa taille).

Accès au modèle d'un élément de contrôle de formulaire

Les modèles des éléments de contrôle d'un formulaire sont accessibles via la méthode GetByName de l'objet formulaire :

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")

Cet exemple détermine le modèle de l'élément de contrôle MyListBox, situé dans le premier formulaire du document texte actuellement ouvert.

En cas de doute sur un élément de contrôle de formulaire, vous pouvez utiliser l'option de recherche dans tous les éléments de contrôle de formulaire souhaités :

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

Cet exemple utilise la méthode HasByName pour vérifier tous les formulaires d'un document texte, afin de déterminer s'ils contiennent un modèle d'élément de contrôle nommé MyListBox. Si un modèle correspondant est trouvé, une référence est enregistrée dans la variable Ctl et la recherche est interrompue.

Accès à la vue des éléments de contrôle de formulaires

Pour accéder à la vue d'un élément de contrôle de formulaire, vous devez d'abord indiquer le modèle associé. La vue de l'élément de contrôle peut être déterminée à l'aide du modèle et du contrôleur de document.

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

Le code de cet exemple est très semblable à celui de l'exemple précédent permettant de déterminer un modèle d'élément de contrôle. Il utilise non seulement l'objet Document Doc , mais aussi l'objet du contrôleur de document DocCrl qui fait référence à la fenêtre du document actif. À l'aide de l'objet du contrôleur et du modèle de l'élément de contrôle, il utilise ensuite la méthode GetControl pour déterminer la vue (variable CtlView) de l'élément de contrôle de formulaire .

Accès à l'objet Shape des éléments de contrôle de formulaires

La méthode permettant d'accéder aux objets Shape d'un élément de contrôle utilise également le niveau de dessin correspondant du document. Pour déterminer un élément de contrôle particulier, vous devez effectuer une recherche dans tous les éléments de dessin du niveau de dessin.

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

Cet exemple vérifie tous les éléments de dessin pour déterminer s'ils prennent en charge l'interface com.sun.star.drawing.XControlShape requise pour les éléments de contrôle de formulaires. Si c'est le cas, la propriété Control.Name vérifie ensuite si le nom de l'élément de contrôle est MyListBox. Si la valeur est True, la fonction met fin à la recherche.

Détermination de la taille et de la position des éléments de contrôle

Comme indiqué précédemment, la taille et la position des éléments de contrôle peuvent être déterminées à l'aide de l'objet shape associé. À cet effet, la forme de l'élément de contrôle, comme tous les autres objets shape, fournit les propriétés Size et Position :

Size (struct)
taille de l'élément de contrôle (structure de données com.sun.star.awt.Size).
Position (struct)
position de l'élément de contrôle (structure de données com.sun.star.awt.Point).

L'exemple suivant définit la position et la taille d'un élément de contrôle à l'aide de l'objet Shape associé :

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

Pour que le code fonctionne, l'objet shape de l'élément de contrôle doit déjà être connu. Si ce n'est pas le cas, il doit être déterminé en utilisant le code ci-dessus.

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