Utilisation des formulaires
- Utilisation des formulaires
- Détails des formulaires d'éléments de contrôle
- Formulaires de base de données
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 formulaires d'éléments de contrôle
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 formulaires d'éléments de contrôle. 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). |