Titre du document dans la barre d'application

Bonjour,

J’ai vraiment cherché et n’ai point trouvé :roll_eyes:

Comment remplacer le titre du formulaire dans sa barre système (qui est par défaut « : nom utilisé lors de la création du formulaire »)
par quelque chose de plus convivial, genre « Menu principal » … et sans les deux points devant bien sûr :thinking:

Merci d’avance
Cordialement - Jean-Paul

Bonjour @jpr105

Associer la macro suivante à l’événement Ouvrir le document du formulaire.

thiscomponent.CurrentController.frame.settitle("Menu principal")

Cordialement

Merci @PYS,

J’ai voulu aller plus loin que ta solution pour que cela fonctionne quelque soit le formulaire mais ça plante un peu :thinking:

C’est au niveau de la récupération du nom du formulaire “appelant”
J’y suis allé un peu à l’instinct au niveau de l’instruction n’ayant pas pris le temps de lire les 3000 pages de docs …

J’espère que ce n’est pas trop compliqué à corriger et ne pas te déranger pour un oui pour un non
Merci encore - Jean-Paul

Sub TitreForm

NomForm = Thiscomponent.CurrentController.getName()

Select Case NomForm

Case “F00_Menu_Principal”
Thiscomponent.CurrentController.frame.settitle(“Menu principal”)

Case “F01_Gestion_des_adhérents”
Thiscomponent.CurrentController.frame.settitle(“Gestion des adhérents”)

Case “F02_Gestion_des_services_et_provenances”
Thiscomponent.CurrentController.frame.settitle(“Gestion des services et provenances”)

Case “F03_Gestion_des_relations_adhérents_services”
Thiscomponent.CurrentController.frame.settitle(“Gestions des relations Adhérents → Services”)

Case “F04_Prévisualisation_Excel”
Thiscomponent.CurrentController.frame.settitle(“Prévisualisation des onglets Excel”)

Case “F05_Liste_des_adhérents”
Thiscomponent.CurrentController.frame.settitle(“Liste de contrôle du fichier des adhérents”)

Case “F06_Liste_des_services_par_adhérent”
Thiscomponent.CurrentController.frame.settitle(“Liste de contrôle des adhérents et services associés”)

End Select

End Sub

Bonjour @jpr105

Sur la forme du CASE , il est plus “élégant” d’écrire comme ceci :

Select Case NomForm
Case "F00_Menu_Principal"
	ModifTitre("Menu principal")
Case "F01_Gestion_des_adhérents"
	ModifTitre("Gestion des adhérents")
Case "F02_Gestion_des_services_et_provenances"
	ModifTitre("Gestion des services et provenances")
Case "F03_Gestion_des_relations_adhérents_services"
	ModifTitre("Gestions des relations Adhérents → Services")
Case "F04_Prévisualisation_Excel"
	ModifTitre("Prévisualisation des onglets Excel")
End Select

Avec la procédure appelée :

sub ModifTitre(sNomForm as string)
Thiscomponent.CurrentController.frame.settitle(sNomForm)
end sub

Sur le fond (récupération du nom du formulaire ayant déclenché la procédure), tu peux procéder comme ceci :

sub ChangerTitre(oEvt)
Dim myArgs As Variant, arg As Object

if not(oEvt.source.currentcontroller.isFormDesignMode) then
	myArgs = oEvt.Source.getArgs()	
	for each arg in myArgs
	  if arg.Name = "DocumentTitle" then 
		  thiscomponent.CurrentController.frame.settitle(arg.Value)
		end if	  
	next
end if

end sub

Explications

  • si le formulaire n’est pas ouvert en mode édition on travaille…
  • on récupère les arguments d’ouverture : tableau de propriétés parmi lesquelles figure DocumentTitle
  • on itère sur ce tableau ; quand on trouve “la bonne propriété” on utilise sa valeur. Dans cet exemple j’utilise directement le nom du formulaire pour la barre de titre. Je te laisse adapter pour ajouter tes “cases”.

Cordialement

Merci @PYS, juste génial :wink: (code final à suivre)

Je vais peut-être tester un “exit for” (si cette version de basic le supporte) car il ne sert à rien de balayer tous les arguments lorsque la propriété “DocumentTitle” a été traitée !

Dernières demandes :

Je voudrais terminer mes travaux sur cette base par la mise en place de deux boutons :

  1. Un pour quitter LibreOffice sans sauvegarder
  2. Un autre pour le quitter en sauvegardant

Complliqué ? Un sujet juste pour ça ?
Merci d’avance - Jean-Paul

Code :

Sub ChangerTitre(oEvt)

Dim myArgs As Variant, arg As Object

If Not(oEvt.source.currentcontroller.isFormDesignMode) then

myArgs = oEvt.Source.getArgs()

For each arg in myArgs

  If arg.Name = "DocumentTitle" then

  	Select Case arg.Value	
  		Case "F00_Menu_Principal"
  			ModifTitre("Menu principal")
  		Case "F01_Gestion_des_adhérents"
  			ModifTitre("Gestion des adhérents")
  		Case "F02_Gestion_des_services_et_provenances"
  			ModifTitre("Gestion des services et provenances")
  		Case "F03_Gestion_des_relations_adhérents_services"
  			ModifTitre("Gestions des relations Adhérents -> Services")
  		Case "F04_Prévisualisation_Excel"
  			ModifTitre("Prévisualisation des onglets Excel")
  		Case "F03_Gestion_des_relations_adhérents_services"
  			ModifTitre("Gestions des relations Adhérents -> Services")
  		Case "F04_Prévisualisation_Excel"
  			ModifTitre("Prévisualisation des onglets Excel")
  		Case "F05_Liste_des_adhérents"
  			ModifTitre("Liste de contrôle du fichier des adhérents")
  		Case "F06_Liste_des_services_par_adhérent"
  			ModifTitre("Liste de contrôle des adhérents et services associés")		
  	End Select

  end if	

Next

end if

End Sub

Sub ModifTitre(sNomForm as string)
Thiscomponent.CurrentController.frame.settitle(sNomForm)
End Sub

Bonjour @jpr105

Je vais peut-être tester un “exit for”

Si tu veux… sachant que le tableau comprend 15 propriétés et que DocumentTitle sera déjà la 8ème parcourue…

quitter LibreOffice sans sauvegarde

Je désapprouve et déconseille fortement. Je ne vois aucune raison pour accepter qu’une application “préempte” le fonctionnement de la suite bureautique et décide de fermer tous mes éventuels autres documents ouverts.

Cela dit, tu peux exécuter :

thisdatabasedocument.close(true)
stardesktop.terminate

Ceci fermera les documents ouverts (hormis l’EDI) avec confirmation demandée si documents modifiés.

quitter LibreOffice avec sauvegarde

Je fais l’hypothèse que par sauvegarde tu entends enregistrement de la base de données. Tu peux exécuter :

thisDatabaseDocument.store

Je termine en indiquant que cette sortie est en quelque sorte anormale car provoquée depuis un programme s’exécutant dans LibreOffice. On scie la branche sur laquelle on est assis donc. J’ai vu parfois des messages d’erreur au lancement suivant de LibreOffice indiquant une fin de session précédente invalide. À toi de voir si le jeu en vaut la chandelle…

Cordialement

Merci @PYS pour tes précieux conseils.

Je te rejoins et ne vais rendre actif qu’un seul bouton “Sauvegarder et quitter”

J’ai quasi bouclé ce que je voulais faire et t’envoie à nouveau un grand MERCI :pray:

Tchao :sunglasses: Jean-Paul