[Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

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 !
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

[Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Bonjour à toutes et tous,

Après quelques recherches sur le forum, j'ai trouvé un post (viewtopic.php?t=64504&hilit=d%C3%A9marrage) avec un lien vers le wiki (https://wiki.openoffice.org/wiki/FR/Doc ... pplication) qui contient une macro qui fait ce que je cherche.

En revanche, j'ai souhaité garder l'agrandissement de mon formulaire au démarrage de la base et là ça se complique.

Je vous joint la base, la macro se situe dans le module "Ouverture_auto".

Voici le code que j'avais initialement pour ouvrir ma base sur le formulaire "Accueil" et l'agrandir (sans masquer la feuille principale) :

Code : Tout sélectionner

option explicit

global LibOForm as object

'Sub LibOFormOpen 

'ThisDatabaseDocument.CurrentController.connect("","") 
'LibOForm = ThisDatabaseDocument.FormDocuments.getByName("Accueil").open 
'LibOForm.currentController.frame.ContainerWindow.IsMaximized = true

'End Sub
Et là, voici le code que j'ai récupéré sur le wiki :

Code : Tout sélectionner

Sub Demarrage()
Dim oConnexion AS Object, oFrame as Object
  ThisDatabaseDocument.CurrentController.connect("","")
  oConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
  ThisDatabaseDocument.FormDocuments.getByName( "Accueil" ).open
  oFrame =   thisDatabaseDocument.FormDocuments.getByName("Accueil").Component.CurrentController.Frame
  oFrame.Title = "Accueil"   
  ThisDatabaseDocument.CurrentController.ApplicationMainWindow.setVisible(False)
End Sub
J'ai essayé d'ajouter la ligne ci-dessous à la nouvelle macro afin d'ouvrir la base sur mon formulaire "Accueil" et masquer la page principale. Malheureusement j'ai un message d'erreur et je ne sais pas vraiment pourquoi. J'ai essayé en désactivant les lignes "option explicit" et "global LibOForm as object" et en déplaçant la ligne ci-dessous à plusieurs endroit dans la nouvelle macro, mais ça ne fonctionne pas.

Code : Tout sélectionner

LibOForm.currentController.frame.ContainerWindow.IsMaximized = true
Voici le message d'erreur que j'obtiens :

message_erreur.PNG

Si quelqu'un avait une solution afin que la base s'ouvre sur le formulaire accueil et masque la page principale de la base je suis intéressé.

Merci d'avance.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Seb1258 le 25 nov. 2024 15:54, modifié 1 fois.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Dude »

Salut,

Maximiser un formulaire a largement été débattu et fait l'objet d'un suprême de code.

Le problème majeur est que l'ODB reste ouvert après la fermeture du formulaire.
Personnellement, je préfère un formulaire autonome en dehors de la base.
Seb1258 a écrit : 25 nov. 2024 11:45 Voici le message d'erreur que j'obtiens
Pour éviter le pifomètre dans la programmation, il faut utiliser XRay.
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par jeanmimi »

Bonjour,
Il y a eu un échange de solutions ici :
viewtopic.php?f=15&t=6360
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Dude »

jeanmimi a écrit : 25 nov. 2024 13:23 Il y a eu un échange de solutions ici :
Oui et relire ce qu'en dit Piaf dans le suprême sur la non portabilité de cette macro.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Bonjour Dude et Jeanmimi,

Merci pour vos retours.

J'avais déjà vu le suprême de code de Piaf mais comme je n'y connais pas grand chose (voir rien du tous) en macro je ne savais pas trop comment l'interpréter.

Je vais regarder vos liens et je reviens ici pour clôturer ou demander un complément.

A bientôt.

EDIT :

Re bonjour,

Je viens de faire pas mal de recherches et j'ai suivi les liens que vous m'avez fournis.

Je ne sais pas si je me suis bien exprimé au départ. La macro dont je dispose (récupérée sur le forum) me permet d'ouvrir la base de données sur le formulaire "Accueil" et de la maximiser (ça ça fonctionne déjà très bien).

Ma question portait plutôt sur comment "fusionner" les deux macro pour rajouter le masquage de l'ODB.

J'ai donc regardé vos réponses et les liens que vous m'avez envoyés.

Concernant xRay, j'ai installé la librairie et lu le document writer joint. Je suis désolé mais cela dépasse largement mes compétences, je n'y comprends rien du tous... Je n'ai pas les connaissances et le vocabulaire technique nécessaire je pense. Merci néanmoins de m'avoir envoyé le lien.

Concernant le suprême de code que Dude m'as envoyé, je l'avais déjà trouvé, mais la macro dont je dispose me parait plus simple (je ne sais pas si elle est mieux en revanche).

J'avais également trouvé le sujet que jeanmimi m'as donné, merci encore.

Du coups je vais surement laisser comme ça si je ne trouve pas de solution pour masquer l'ODB au démarrage de l'application.

Enfin, Dude, tu parles de formulaire autonome en dehors de la base de données, je ne connais pas du tous je vais creuser un peu et voir si cela pourrait me convenir.

Merci à vous pour votre aide.

EDIT :

Je viens de trouver un sujet sur le forum et je ne pense pas qu'un formulaire autonome puisse convenir pour ma base.

viewtopic.php?f=37&t=45997
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par jeanmimi »

Peux-tu tester cette Base qui a été élaborée dans le forum ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Re bonjour jeanmimi,

Merci pour ton retour et ton temps.

J'ai testé la base que tu as récupérée sur le forum, et l'ouverture fonctionne comme je le souhaite sauf pour maximiser le formulaire principal.

J'ai essayé de rajouté la ligne

Code : Tout sélectionner

LibOForm.currentController.frame.ContainerWindow.IsMaximized = true
mais ce n'est surement pas la bonne méthode et ça ne fonctionne pas.

J'ai également vu des lignes indiquant des positions avec la résolution de l'écran mais je ne sais pas quoi en faire (dans la macro du module 2, ligne 58 à 87).
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par jeanmimi »

La bonne méthode est décrite ici :
viewtopic.php?p=180966#p180966
ou là :
viewtopic.php?p=180983#p180983
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Bonjour jeanmimi,

Merci pour ton retour.

Après quelques tests sur les liens que tu proposes ci-dessous, je n'arrive pas à ce que je souhaite.

Les deux modèles de formulaire fournis par Piaf sont mis en plein écran de deux manières différentes. De mon côté je souhaite juste rajouter la maximisation de la fenêtre du formulaire (sans mettre en plein écran) à la macro dont je dispose pour masquer l'ODB.

Code : Tout sélectionner

Sub Demarrage()
Dim oConnexion AS Object, oFrame as Object
  ThisDatabaseDocument.CurrentController.connect("","")
  oConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
  ThisDatabaseDocument.FormDocuments.getByName( "Accueil" ).open
  oFrame =   thisDatabaseDocument.FormDocuments.getByName("Accueil").Component.CurrentController.Frame
  oFrame.Title = "Accueil"   
  ThisDatabaseDocument.CurrentController.ApplicationMainWindow.setVisible(False)
End Sub
En résumé, à l'ouverture de la base je souhaite :
  • Ouvrir le formulaire "Accueil" maximisé (mais pas en plein écran, simplement qu'il prenne tous l'écran (IsMaximized = true))
  • Masquer l'ODB
J'espère avoir été claire dans ma demande.

Bien entendu, si c'est impossible je comprendrais.

Merci d'avance.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par jeanmimi »

Seb1258 a écrit : 26 nov. 2024 18:51 En résumé, à l'ouverture de la base je souhaite :
Ouvrir le formulaire "Accueil" maximisé (mais pas en plein écran, simplement qu'il prenne tous l'écran (IsMaximized = true))
Masquer l'ODB
Peux-tu tester l'exemple joint ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Bonjour jeanmimi,

Merci encore pour ton retour et surtout pour ta patience avec moi.

J'ai testé la base que tu as mise en PJ de ton post et le résultat est le même que sur ma base (voir image en PJ).

Agrandissement actuel :

taille_actuelle.PNG

Agrandissement souhaité :

taille_souhaitée.PNG

Merci encore.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Dude »

Seb1258 a écrit : 27 nov. 2024 10:32 J'ai testé la base que tu as mise en PJ de ton post et le résultat est le même
Bah oui, il n'y a rien qui maximise le formulaire après son ouverture.
Si je reprends le suprême et que j'ajoute les lignes dans la routine :

Code : Tout sélectionner

Sub onClickOuvrirC( oEvent as variant )
	oForm = ThisDatabaseDocument.FormDocuments.getByName( "F_saisie_caisse" )
	oForm.open()
	oComponent = oForm.getComponent()
	oCurrentController = oComponent.getCurrentController()
	oFrame = oCurrentController.getFrame()
	oWindow = oFrame.getContainerWindow()
	oWindow.IsMaximized = true
End Sub
Ca marche comme attendu.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Dude,
Dude a écrit : 27 nov. 2024 13:54 Ca marche comme attendu.
Que veux tu dire par là ? Pour moi, l'ODB se masque bien et le formulaire s'ouvre bien mais il n'est pas maximisé.

C'est quand même dommage de ne pas pouvoir maximiser le formulaire que l'ont souhaite ouvrir et masquer l'ODB.

Merci quand même.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Dude »

Seb1258 a écrit : 27 nov. 2024 16:13 C'est quand même dommage de ne pas pouvoir maximiser le formulaire que l'ont souhaite ouvrir et masquer l'ODB.
Le document que je fournis montre que le formulaire principal se lance en masquant l'ODB.
Et si tu cliques sur le bouton "Ouverture de la caisse", le formulaire se lance maximisé.
Ce qui est dommage, c'est de ne pas te donner la peine de tester. :tesfou:

Je te laisse le soin de comprendre le code et de l'adapter pour maximiser le formulaire principal.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Bonjour Dude,

J'ai bien testé le document que tu as envoyé et vu comment il marchait (même si je ne comprends pas les lignes de code aussi bien que toi).

En revanche, ce n'est pas ce que je recherche. Ça c'est dommage effectivement.

Ce que ta base fait, la mienne le fait également. Et toi ? As tu testé la base que j'ai envoyée ? Elle est un peu lourde certes.

Le formulaire "Accueil" s'ouvre sans être maximisé et masque l'ODB (comme la tienne) puis quand je clic sur les boutons pour ouvrir d'autre formulaire, je les maximises en fermant le formulaire "Accueil" par exemple.

Néanmoins, merci de m'avoir répondu, je vais laisser comme cela pour l'instant. Et si besoin je reviendrai vers vous.

Bonne journée.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Dude »

Seb1258 a écrit : 28 nov. 2024 10:41 et vu comment il marchait
Et donc est-ce que...
Dude a écrit : 28 nov. 2024 07:13 si tu cliques sur le bouton "Ouverture de la caisse", le formulaire se lance maximisé.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

Dude,

Effectivement en cliquant sur le bouton le nouveau formulaire s'ouvre maximisé.

Mais comme indiqué ce n'est pas ça que je souhaite. Ou alors tu veux me faire comprendre quelque chose et je t'avoue que je ne vois pas du tous.

Seb1258 a écrit : 27 nov. 2024 16:13 Que veux tu dire par là ? Pour moi, l'ODB se masque bien et le formulaire s'ouvre bien mais il n'est pas maximisé.
Seb1258 a écrit : 26 nov. 2024 18:51 En résumé, à l'ouverture de la base je souhaite :

Ouvrir le formulaire "Accueil" maximisé (mais pas en plein écran, simplement qu'il prenne tous l'écran (IsMaximized = true))

Masquer l'ODB
Seb1258 a écrit : 25 nov. 2024 14:04 La macro dont je dispose (récupérée sur le forum) me permet d'ouvrir la base de données sur le formulaire "Accueil" et de la maximiser (ça ça fonctionne déjà très bien).

Cliquer sur un bouton et maximiser le nouveau formulaire, ça je l'ai déjà !

Ce que je souhaite, c'est que le formulaire "Accueil" (qui s'ouvre avec la base) soit maximisé et que l'ODB soit masqué. Je ne sais pas comment m'expliquer mieux...
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Dude »

Seb1258 a écrit : 28 nov. 2024 14:35Ce que je souhaite, c'est que le formulaire "Accueil" (qui s'ouvre avec la base) soit maximisé et que l'ODB soit masqué. Je ne sais pas comment m'expliquer mieux...
Et moi aussi...
Dude a écrit : 28 nov. 2024 07:13 Je te laisse le soin de comprendre le code et de l'adapter pour maximiser le formulaire principal.
Tu reprends la macro qui ouvre ton formulaire "Accueil" et tu y ajoutes les lignes en question.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Résolu][Base] Ouvrir la base sur un formulaire maximisé et masquer la page principale.

Message par Seb1258 »

J'avais commencé à écrire un pavé en indiquant toutes les manipulations que j'ai tenté avec le code sans succès.

En résumé, j'ai d'abord tenté de modifier le code de ta base sans succès, puis j'ai tenté de modifier le code de ma base avec celui de la tienne, sans succès non plus. En relisant mon message sur le forum (avant de le poster), j'ai vu qu'il y avait une ligne que je n'avais pas copié sur ton code (voir ci-dessous) et là ça fonctionne impeccable.

Code : Tout sélectionner

ThisDatabaseDocument.CurrentController.ApplicationMainWindow.setVisible(false)
Lors de l'ouverture du document, l'ODB se masque et le formulaire "Accueil" s'ouvre et se maximise.

Voici le code si ça peux aider d'autres personnes :

Code : Tout sélectionner

option explicit

global LibOForm as object

Sub LibOFormOpen (evt As Object)
ThisDatabaseDocument.CurrentController.ApplicationMainWindow.setVisible(false)
Dim oConnexion AS Object
Dim props(0) As New com.sun.star.beans.PropertyValue
ThisDatabaseDocument.CurrentController.connect("","") 
LibOForm = ThisDatabaseDocument.FormDocuments.getByName("Accueil").open 
LibOForm.currentController.frame.ContainerWindow.IsMaximized = true

End Sub
Merci pour ton aide Dude.

EDIT :

Je rajoute la base mise à jour grâce aux indications de Dude afin d'aider de futurs utilisateurs.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro