[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 !
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

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

Message par coucou »

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

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 modification par coucou le 28 mars 2018 12:40, modifié 2 fois.
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouverture automatique de formulaire

Message par Piaf »

Re
Un petit exemple valant mieux qu'un long discours

Code : Tout sélectionner

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+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Base] Ouverture automatique de formulaire

Message par jeanmimi »

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

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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par jeanmimi le 28 mars 2018 12:45, modifié 2 fois.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

Re: [Base] Ouverture automatique de formulaire

Message par coucou »

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