Page 1 sur 1

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

Publié : 28 mars 2018 11:36
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ù...

Re: [Base] Ouverture automatique de formulaire

Publié : 28 mars 2018 12:27
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+

Re: [Base] Ouverture automatique de formulaire

Publié : 28 mars 2018 12:36
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

Re: [Base] Ouverture automatique de formulaire

Publié : 28 mars 2018 12:39
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: