[Résolu] [Base] Ouverture automatique de formulaire

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu] [Base] Ouverture automatique de formulaire

Messagepar coucou » 28 Mars 2018 12:36

Bonjour à tous,

Je souhaite qu'un formulaire s'ouvre automatiquement au lancement de la base, afin que les utilisateurs ne se trompent pas de formulaire.
Je tiens à préciser que j'ai fait des recherches à ce sujet, mais je n'y suis pas arrivé.
J'ai trouvé une macro qui fait cela, mais il faut que j'adapte le code à ma base, ce qui est pour moi loin d'être évident.

La macro est issue de la base "Bilbliothèque.odb" trouvée sur le fil [Résolu][Base] gestion d'une bibliothèque.

Le code est celui-ci:
Code : Tout sélectionner   AgrandirRéduire
sub OpenFormDivers(oEv as Object)
Dim oForm as Object, Control as Object, Controller as Object
Dim NomForm as string
'sur l'évènement lors du chargement des formulaires du select case
   oForm = oEv.Source
'récupère le nom du formulaire qui est chargé   
   NomForm = oForm.name
'en fonction du formulaire chargé   
   select case NomForm      
      case "fAuteurs"
'définit le titre de la fenêtre      
         ThisComponent.CurrentController.Frame.Title = "Saisie des Auteurs"
'définit le contrôle qui prendra le focus         
         Control = oForm.getByName("txtNomAuteur")
      case "fOeuvres"
         ThisComponent.CurrentController.Frame.Title = "Saisie Oeuvres et livres"
         Control = oForm.getByName("txtTitre")
      case "fVilles"
         ThisComponent.CurrentController.Frame.Title = "Saisie Codes postaux et villes"
         exit Sub
      case "fAdherents"
         ThisComponent.CurrentController.Frame.Title = "Saisie des Adhérents"
         Control = oForm.getByName("txtTitre")
      case "fTypesOeuvres"
         ThisComponent.CurrentController.Frame.Title = "Types d'oeuvres"
         exit Sub
      case "fEditeurs"
         ThisComponent.CurrentController.Frame.Title = "Saisie des éditeurs"
         exit Sub
      case "fEmprunts"
         ThisComponent.CurrentController.Frame.Title = "Emprunt Livres"
         Control = oForm.getByName("txtNomComplet")
      case "fRestitutions"
         ThisComponent.CurrentController.Frame.Title = "Restitution Livres"
         Control = oForm.getByName("txtNomComplet")
      case "fMenu"
         ThisComponent.CurrentController.Frame.Title = "Menu de l'application"
         Control = oForm.getByName("btAdherents")
   end select
   Controller = oForm.Parent.Parent.CurrentController
'met le focus sur le contrôle désigné   
   Controller.getControl(Control).setFocus()   
end sub


Il y a certainement un endroit où je dois mettre le nom de mon formulaire, mais je ne sais pas trop où...
Dernière édition par coucou le 28 Mars 2018 13:40, édité 2 fois.
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
coucou
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 76
Inscrit le : 08 Sep 2009 09:20

Re: [Base] Ouverture automatique de formulaire

Messagepar Piaf » 28 Mars 2018 13:27

Re
Un petit exemple valant mieux qu'un long discours
Code : Tout sélectionner   AgrandirRéduire
Sub OuvrirMenu
Dim oForm as Object, Control as Object, Controller as Object
     ThisDatabaseDocument.CurrentController.connect("","")
     oForm = ThisDatabaseDocument.FormDocuments.getByName("FormulaireMenu").open
     oForm.CurrentController.Frame.Title = "Menu de l'application"
   oForm = oForm.DrawPage.Forms.getByName("FormulaireMenu")
   Control = oForm.getByName("btnJeux")
   Controller = oForm.Parent.Parent.CurrentController   
   Controller.getControl(Control).setFocus()
End Sub
Pour les explications voir Principe d'ouverture et fermeture de formulaire
A+
Pièces jointes
ludo.post.complet.V4-6.odb
(248.78 Kio) Téléchargé 66 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Base] Ouverture automatique de formulaire

Messagepar jeanmimi » 28 Mars 2018 13:36

Bonjour,
Je te propose un code plus simple pour la macro d'ouverture du formulaire appelé Formulaire1.
Après enregistrement dans les Macros de la Base, elle se paramètre dans le Menu : Outils > Personnaliser et choisir "Ouvrir le document"

Code : Tout sélectionner   AgrandirRéduire
Sub OuverureAutomatiqueFromualireLorsDemarrage(evt As Object)
'*************************************************************************************************
'Lancée par l’événement "Ouvrir le document"
' Permet d'afficher le formulaire appelé "FormulaireMenu" automatiquement à l'ouverture de la base
'=================================================================================================
   Dim oConnexion AS Object
   Dim props(0) As New com.sun.star.beans.PropertyValue
   ThisDatabaseDocument.CurrentController.connect("","")
   oConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
   ThisComponent.FormDocuments.loadComponentFromURL("FormulaireMenu","", 0, props())
End Sub
Pièces jointes
ludo.post.complet.V4-7.odb
(249.59 Kio) Téléchargé 127 fois
Dernière édition par jeanmimi le 28 Mars 2018 13:45, édité 2 fois.
LibreOffice : Version : 7.2 (x64)(22 août 2021)
Adoptopen JRE ou Oracle JRE (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 16049
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: [Base] Ouverture automatique de formulaire

Messagepar coucou » 28 Mars 2018 13:39

Nickel ! C'est exactement ce qu'il fallait ! :super:


Un grand merci ! La base de données pour la ludothèque associative est terminée !!! :bravo:
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
coucou
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 76
Inscrit le : 08 Sep 2009 09:20


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)