|
Fr:Ajouter un Bouton pour Ouvrir un Autre Formulaire
From NeoWiki
Si vous essayez d'ajouter une nouvelle sortie d'observaton qui fait intervenir un site qui n'est pas déjà présent dans la table Sites, vous aurez un message d'erreur. Les nouveaux sites doivent être ajoutés avant d'entrer les données de la sortie. Comme le formulaire Sorties_Observations sera très souvent utilisé et comme il est probable que les utilisateurs oublieront d'enregistrer d'abord les nouveaux sites, nous allons faciliter la tâche de l'utilisateur en ajoutant un bouton au formulaire Sorties_Observations qui ouvrira le formulaire Entrée des données de Sites. Cet article explique comment faire cela.
Créer les Macros Nécessaires
Note: Les macros ci-dessous ont été trouvées sur ce fil de discussion du forum oooforums.org Base. Seuls les noms des formulaires ont été modifiés.
- Dans la fenêtre principale de la base de données, cliquez sur Formulaires dans la colonne de gauche.
- Faites un clic droit ou Ctrl-clic sur le formulaire Sorties_Observations et choisissez Modifier dans le menu contextuel.
- Dans le menu Outils, choisissez Macros, puis Gérer les macros et enfin NeoOffice Basic.
- Cliquez sur le bouton Gérer.
- Cliquez sur le triangle à gauche de l'icône du document Sorties_Observations
- Cliquez sur l'icône de dossier Standard qui apparait.
- Cliquez sur le bouton Nouveau ; la fenêtre Nouveau Module apparait.
- Donnez un nom au nouveau module. J'ai choisi "BoutonsMacros" (sans guillemets).
- Cliquez sur OK
- La fenêtre Sorties_Observations.Standard - Basic s'ouvre. Vous verrez les lignes suivantes :
- Sub Main
- End Sub
- Cliquez dans l'espace vide sous la ligne "End Sub".
- Entrez le code suivant :
- REM Macro nécessaire pour ouvrir un formulaire quelconque function OpenForm( formContainer as variant, oConnection as variant, sFormName as string) as variant Dim aProp(1) As New com.sun.star.beans.PropertyValue aProp(0).Name = "ActiveConnection" aProp(0).Value = oConnection aProp(1).Name = "OpenMode" aProp(1).Value = "open" OpenForm = formContainer.loadComponentFromURL(sFormName,"_blank",0,aProp()) end function function getFormsTC() as variant getFormsTC = thisComponent.Parent.getFormDocuments end function function getConnectionTC() as variant getConnectionTC = thisComponent.Drawpage.Forms(0).ActiveConnection end function REM Macro ouvrant le formulaire particulier 'Entrée des données de Sites'. Il faut une macro pour chaque formulaire que vous voulez ouvrir depuis un autre formulaire. sub Open_Form_Entree_donnees_Sites( oev as variant ) sFormName = "Entrée des données de Sites" OpenForm( getFormsTC, getConnectionTC, sFormName ) end sub
- Note: le code sous REM Macro nécessaire pour ouvrir un formulaire quelconque ne doit être entré qu'une seule fois dans le Module. Si vous ajoutez des boutons pour ouvrir d'autres formulaires, tout ce que vous aurez à faire sera de copier le code sous REM Macro ouvrant le formulaire particulier et modifier le nom dans les deux premières lignes pour les remplacer par celui du formulaire que vous voulez ouvrir. Dans la première ligne, qui commence par sub OpenForm, vous ne devez pas utiliser d'espaces, ni de caractères accentués, dans le nom de la macro. Remplacez les espaces par un signe de soulignement, ou accolez les mots : (EntreeDonneesSites).
- Cliquez sur le bouton Enregistrer de la barre d'outils (représentant un disque dur).
- Fermez la fenêtre.
--> Note: Ce tutoriel vous fait enregistrer la macro dans le document. Il est possible de l'enregistrer dans un module de "Mes Macros". Mais si vous copiez ou déplacez le document sur un autre ordinateur, le formulaire ne pourra pas trouver la macro. L'enregistrer dans le document assure que la macro sera toujours disponible dans la base de données.
Ajouter le Bouton
- Le formulaire Sorties_Observations étant encore ouvert, vérifiez que la barre d'outils de contrôles de formulaires est visible. Si elle ne l'est pas, allez dans le menu Affichage et choisissez Barres d'outils puis Contrôles de formulaires.
- Cliquez l'icône Bouton dans cette barre d'outils.
- Déplacez la souris jusqu'à l'endroit du formulaire où vous voulez placer le bouton. J'ai choisi une place proche du titre "Site".
- Cliquez et glissez le curseur pour créer le bouton.
- Double-cliquez sur le bouton pour ouvrir la fenêtre Propriétés : Bouton.
- Sous l'ongletGénéral, faites les changements suivants :
- Donnez au bouton un Nom explicite. Je l'ai appelé "Ouvrir le formulaire de Sites".
- Donnez au bouton un Titre qui apparaîtra sur le bouton. J'ai entré "Nouveau Site" (sans guillemets).
- Réglez Tabstop sur "Non." De cette façon, le bouton ne peut pas être sélectionné à l'aide de la touche de tabulation . Laissez cette option sur Oui si vous voulez qu'il puisse l'être.
- Vers le bas, entrez un Texte d'aide explicite. Ce texte apparaîtra dans une bulle d'aide lorsque vous passerez le curseur au-dessus du bouton, si vous n'avez pas désactivé cette option.
- Dans l'onglet Événements, cherchez la ligne intitulée Bouton de souris enfoncé.... Cliquez sur le bouton ... à droite du champ d'édition sur la même ligne. La fenêtre Assigner une action s'ouvre.
- Vérifiez que la ligne Bouton de souris enfoncé est sélectionnée. Sinon sélectionnez-la.
- Cliquez sur le bouton Macro...
- Dans la fenêtre Sélecteur de macro, cliquez sur le petit triangle à gauche de l'icône du document Sorties_Observations.
- Cliquez sur le petit triangle à gauche de l'icône du dossier Standard.
- Cliquez sur l'icône du dossier BoutonsMacros.
- Dans la colonne Nom de la macro, sélectionnez la macro appelée Open_Form_Entree_donnees_Sites.
- Cliquez sur OK.
- Fermez la fenêtre Assigner une action en cliquant sur OK.
- Fermez la fenêtre Propriétés : Bouton.
- Cliquez sur l'icône(Dés)activer le mode Conception (le triangle bleu)
- Cliquez le nouveau bouton, et vérifiez que le formulaire Entrée des données de Sites s'ouvre.
Actualiser le contenu de la boîte combinée
À ce point, le bouton sur le formulaire Sorties_Observations ouvre le formulaire Entrée des données de Sites, et l'utilisateur peut alors entrer les données du nouveau site. Mais si vous retournez au formulaire Sorties_Observations, le nouveau site n'apparait pas dans la boîte combinée. Il existe au moins deux méthodes pour aborder ce problème. Pour ce que nous voulons faire, nous allons ajouter une macro au formulaire Entrée des données de Sites pour forcer l'actualisation de la boîte combinée sur le formulaire Sorties_Observations lorsqu'un nouveau site a été ajouté dans le formulaire Entrée des données de Sites.
- Tout d'abord, nous devons noter le nom du formulaire de de la boîte combinée qui doit être actualisée.
- Ouvrez le formulaire Sorties_Observations pour l'éditer (faites un clic droit ou Ctrl-clic sur son icône et choisissez Modifier)
- Faites un clic droit ou Ctrl-clic sur le menu déroulant Site et choisissez Formulaire... dans le menu contextuel.
- Notez le nom du contrôle enrregistré dans le champ Nom de l'onglet Général de la fenêtre Propriétés du formulaire puis fermez la fenêtre.
- Faites de nouveau un clic droit ou Ctrl-clic sur le menu déroulant Site et choisissez Contrôle... dans le menu contextuel.
- Notez le nom du contrôle enregistré dans le champ Nom de l'onglet Général de la fenêtre Propriétés : Boîte combinée puis fermez la fenêtre.
- Note vous pouvez aussi vérifier les noms du formulaire et des contrôles en activant le Navigateur de formulaire.
- Ouvrez le formulaire pour l'éditer (faites un clic droit ou Ctrl-clic sur son icône et choisissez Modifier).
- Dans le menu Outils, choisissez Macros puis Gérer les macros et finalement NeoOffice Basic...
- Sélectionnez la Bibliothèque et le Module où vous voulez enregistrer la macro. Voir l'article Comment utiliser les macros pour plus d'informations sur la manière de procéder. Cliquez sur Éditer
- Si vous enregistrez la macro dans le formulaire, elle sera transférée avec la base de données si vous déplacez celle-ci sur un autre ordinateur, mais chaque fois que ouvrirez le formulaire, vous aurez un message vous avertissant que le document contient des macros. Si vous utilisez la base de données sur un seul ordinateur, vous pouvez éviter cet avertissement en enregistrant la macro dans l'une des bibliothèques de la section Mes Macros. Il est recommandé de ne pas enregistrer de macros dans la bibliothèque Standard, car cette bibliothèque est facilement écrasée. L'article Comment utiliser les macros contient des informations sur la façon de créer de nouvelles bibliothèques ou de nouveaux modules.
- Cliquez après les mots End Sub et pressez la touche Retour deux ou trois fois.
- Collez le code suivant en remplaçant , toutes les occurrences de FieldTripsInfo par le nom de votre formulaire et toutes les occurrences de Location par le nom de votre boîte combinée. Conservez les guillemets entourant les noms du formulaire et du contrôle.
- Sub Actualiser_Formulaire_Sorties_Observations Dim tmp as Object tmp = thisComponent.Parent.FormDocuments if tmp.HasByName("FieldTripsInfo") then tmp = tmp.getByName("FieldTripsInfo") if not IsNull(tmp.Component) then tmp = tmp.Component.DrawPage.Forms.getByName("FieldTripsInfo") if tmp.HasByName("Location") then tmp.getByName("Location").refresh endif endif endif End Sub
- Cliquez sur l'icône d'enregistrement dans la barre d'outils
- Fermez la fenêtre Macro
- Faites un clic droit ou Ctrl-clic sur n'importe quel contrôle dans le formulaire Entrée des données de sites et choisissez Formulaire... dans le menu contextuel.
- Cliquez sur l'onglet Événements
- Cliquez sur le bouton ... à droite du champ Après le changement d'enregistrement
- Dans la fenêtre Assigner une action, vérifiez que Après le changement d'enregistrement est bien sélectionné et cliquez sur le boutonMacro
- Cliquez sur les triangles gris pour accéder aux bibiothèques et aux modules dans la colonne Bibliothèque jusqu'à ce que vous ayez atteint le module où est enregistrée la nouvelle macro
- Dans la colonne Nom de la macro, sélectionnez le nom de la nouvelle macro (Actualiser_Formulaire_Sorties_Observations)
- Cliquez sur OK
- Fermez la fenêtre Propriétés du formulaire
- Testez la macro en ajoutant une nouvelle sortie au formulaire Sorties_Observations et utilisez le bouton Nouveau Site pour entrer un nouveau site.