Contenues dansTrouver plus de documentationRessources d'assistance comprises | Télécharger cet ouvrage au format PDF (1328 Ko)
Chapitre 12 FormulairesÀ de nombreux égards, la structure des formulaires StarOffice correspond aux boîtes de dialogue abordées au chapitre précédent. Il existe cependant quelques différences importantes :
Les utilisateurs souhaitant créer des formulaires avec leurs propres méthodes de gestion des événements doivent se reporter au chapitre 11, Boîtes de dialogue. Les mécanismes expliqués ici sont identiques à ceux des formulaires. Utilisation des formulairesLes formulaires StarOffice 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 Fonctions de formulaire permet d'éditer des formulaires. Un formulaire StarOffice peut adopter l'un des deux modes suivants : le mode brouillon et le mode affichage. En mode brouillon, 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. La barre d'outils Fonctions de formulaire permet également de passer d'un mode à l'autre. Détermination de formulaires d'objetStarOffice positionne les éléments de contrôle d'un formulaire au niveau de l'objet de dessin. Le formulaire d'objet 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 avec le numéro d'index 0. Lorsque vous utilisez des feuilles de calcul, une étape intermédiaire est nécessaire via 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 formulaire d'éléments de contrôleUn élément de contrôle d'un formulaire a trois aspects :
Accès au modèle des formulaires d'éléments de contrôleLes modèles des éléments de contrôle d'un formulaire sont accessibles via la méthode GetByName du formulaire d'objet : 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 le formulaire d'un élément de contrôle, vous pouvez utiliser l'option de recherche dans tous les formulaires de l'élément de contrôle souhaité : 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 formulaires d'éléments de contrôlePour accéder à la vue d'un formulaire d'éléments de contrôle, vous devez d'abord indiquer le modèle associé. La vue du formulaire d'éléments de contrôle peut être déterminée grâce au modèle et au 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 de 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) du formulaire d'éléments de contrôle. Accès à l'objet Shape des formulaires d'éléments de contrôleLa 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ôleComme 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 :
L'exemple suivant montre comment définir la position et la taille d'un élément de contrôle en utilisant 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. Détails des formulaires d'éléments de contrôleLes éléments de contrôle disponibles dans les formulaires sont semblables à ceux des boîtes de dialogue. Vous pouvez choisir parmi plusieurs champs de texte simples, zones de liste, boîtes combinées et boutons. Vous trouverez ci-dessous la liste des propriétés les plus importantes pour les formulaires des éléments de contrôle. Toutes les propriétés font partie des objets Model associés. Outre les éléments de contrôle standard, un élément de contrôle de table est également disponible pour les formulaires : il permet l'intégration de tables de bases de données complètes. Pour plus d'informations à ce sujet, reportez-vous à la section Formulaires de base de données du Chapitre 12, Formulaires. BoutonsL'objet Model d'un bouton de formulaire fournit les propriétés suivantes :
La propriété ButtonType permet de définir une action s'exécutant automatiquement lorsque l'utilisateur appuie sur le bouton. Le groupe de constantes com.sun.star.form.FormButtonType associé fournit les valeurs suivantes :
Les types de bouton OK et Annuler figurant dans les boîtes de dialogue ne sont pas pris en charge dans les formulaires. Boutons radioLes propriétés suivantes d'un bouton radio sont disponibles via l'objet Model :
Le mécanisme de regroupement des boutons radio fait la distinction entre les éléments de contrôle destinés aux boîtes de dialogue et aux formulaires. Alors que les éléments de contrôle apparaissant successivement dans les boîtes de dialogue sont automatiquement regroupés, le regroupement des formulaires s'effectue sur la base des noms. Pour ce faire, tous les boutons radio d'un groupe doivent porter le même nom. StarOffice associe les éléments de contrôle groupés dans une matrice afin que les boutons individuels d'un programme StarOffice Basic puissent être atteints de la même manière que précédemment. L'exemple suivant montre comment déterminer le modèle d'un groupe d'éléments de contrôle. 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("MyOptions") Then
Ctl = Form. GetGroupbyName("MyOptions")
Exit Function
End If
Next I
Ce code correspond à l'exemple précédent permettant de déterminer un modèle simple d'élément de contrôle. Il effectue une recherche en boucle dans tous les formulaires du document texte actif et utilise la méthode HasByName pour vérifier si le formulaire correspondant contient un élément comportant le nom MyOptions recherché. Si tel est le cas, l'accès à la matrice du modèle s'effectue via la méthode GetGroupByName, plutôt que la méthode GetByName qui permet de déterminer des modèles simples. Cases à cocherL'objet Model d'un formulaire de case à cocher fournit les propriétés suivantes :
Champs de texteL'objet Model d'un formulaire de champ de texte fournit les propriétés suivantes :
Zones de listeL'objet Model d'un formulaire de zone de liste fournit les propriétés suivantes :
Remarque – La propriété ValueItemList des formulaires de zones de liste s'apparente à la propriété VBA ItemData, qui permet de gérer des informations supplémentaires pour les entrées de liste individuelles. De plus, les méthodes suivantes sont fournies via l'objet View de la zone de liste :
Formulaires de base de donnéesLes formulaires StarOffice peuvent être directement liés à une base de données. Les formulaires créés de cette manière offrent toutes les fonctions d'une base de données frontale complète et ne nécessitent pas de programmation indépendante. L'utilisateur peut parcourir les tables et requêtes sélectionnées, y effectuer des recherches, modifier des enregistrements de données et en insérer de nouveaux. StarOffice vérifie automatiquement la pertinence des données récupérées à partir de la base de données et s'assure que toutes les modifications sont réécrites dans la base de données. Un formulaire de base de données correspond en fait à un formulaire StarOffice standard. Outre les propriétés standard, les propriétés suivantes, propres aux bases de données, doivent également être définies dans le formulaire :
L'énumération com.sun.star.sdb.CommandType reconnaît les valeurs suivantes :
Les champs de la base de données sont assignés aux éléments de contrôle individuels via cette propriété :
TablesUn autre élément de contrôle est fourni pour utiliser les bases de données : il s'agit de l'élément de contrôle de table. Il représente le contenu d'une table ou d'une requête de base de données complète. Dans le scénario le plus simple, un élément de contrôle de table est lié à une base de données grâce au formulaire de l'assistant qui relie toutes les colonnes aux champs correspondants de la base de données, conformément aux spécifications de l'utilisateur. Du fait de la relative complexité de l'API, nous n'en fournirons pas une description complète pour l'instant. |