[Base] Maximiser un formulaire

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur: Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.

[Base] Maximiser un formulaire

Messagepar Piaf » 29 Avr 2012 14:16

Bonjour
Suite à ce message du fil en question.
Bien que le sujet ai un peu débordé de la question posée, j'ai trouvé intéressant d'approfondir un peu.
Je propose donc deux macros testées sous Libre Office 3.5.2.2 et Open Office 3.3.0
La première est une compilation de réponses apportées à cette question dans le forum
Code : Tout sélectionner   AgrandirRéduire
Sub ResizeWindow
Dim vFrame as Object, vWindow as Object, vRect as Object, oForm as Object
Dim intHeight as Integer, intWidth  as Integer, intXPos as Integer, intYPos as Integer
Dim oDisplayAccess, oDisplay, aRect as Object
   oDisplayAccess = CreateUnoService("com.sun.star.awt.DisplayAccess")
   oDisplay = oDisplayAccess.getByIndex(0)
   aRect = oDisplay.WorkArea
   oForm = thisComponent
    vFrame = oForm.getCurrentController.getFrame()
    vWindow = vFrame.getContainerWindow()
    vRect = vWindow.getPosSize()
    intXPos=0
    intYPos=0
    intHeight = aRect.Height
    intWidth = aRect.Width
    vWindow.setPosSize(intXPos, intYPos, intWidth, intHeight, com.sun.star.awt.PosSize.POSSIZE )
End Sub

La seconde est la mise en œuvre des propriétés relevées par JPL dans le message cité.
Code : Tout sélectionner   AgrandirRéduire
Sub MaximizeWindow
Dim oForm as Object, vFrame as Object, vWindow as Object
   oForm = thisComponent
    vFrame = oForm.getCurrentController.getFrame()
    vWindow = vFrame.getContainerWindow()
    vWindow.IsMaximized = true
End Sub

En espérant que ça puisse être utile.
A+
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] Maximiser un formulaire , positionner un dialogue

Messagepar TChatenet » 21 Avr 2014 14:45

Bonjour ,

Merci pour cette contribution mais malheureusement "com.sun.star.awt.DisplayAccess" ne renvoie plus rien . Je crois avoir compris qu'il a été volontairement supprimé dans libre office
Par ailleurs les coordonnées des dialogues ainsi que leurs dimensions sont exprimées en unité ma pour , je cite " Map AppFont (ma) remplace l'unité Twips pour obtenir une meilleure indépendance vis-à-vis des plates-formes."
https://wiki.openoffice.org/wiki/FR/Documentation/BASIC_Guide/Properties
Pour positionner convenablement les dialogues là ou on le souhaite il faut donc connaitre les dimensions de son écran en ma .

Je vous propose cette solution inspirée de mes diverses lectures à ce sujet . Une fois les dimensions de l'affichage connue il est facile de positionner les dialogues au moyen des propriétés .model.positionX et positionY après avoir interrogé les dimensions du dialogue .model.wdith et model.height
Malheureusement je n'ai pas trouvé d'autre moyen que de faire appel aux API windows , donc cette solution n'est absolument pas multiplateforme :oops:
En espérant que cela pourra être utile

[Edit suite aux posts suivants : Merci Piaf , bravo Dude ] Il existe une solution indépendante du système d'exploitation permettant d'obtenir la résolution d'écran en pixels , code modifié en conséquence

Code : Tout sélectionner   AgrandirRéduire
Sub ResoEcran
dim x%, y%
dim oDA as object, oTk as object, oRes as object, odlg as object
   x = 0 : y = 0
   oDa = CreateUnoService("com.sun.star.awt.DisplayAccess")
   oTK = thisComponent.currentController.componentWindow.toolkit
   If Not isNull(oDa) Then
      oRes = oDa(0).screenArea
      x = oRes.Width : y = oRes.Height
'      MsgBox "Vous êtes sous AOO et la Résolution est de : " & x & " x " & y
   ElseIf Not isNull(oTk) Then
      oRes = oTK.workArea
      x = oRes.Width : y = oRes.Height
'      MsgBox " Vous êtes sous LibO et la Résolution est de : " & x & " x " & y       
   EndIf
   
   DialogLibraries.Loadlibrary("Standard") ' on charge l'ensemble de la Bibli Standard de ce document en mémoire
   odlg = CreateUnoDialog(DialogLibraries.GetByName("Standard").GetByName("Dialog1"))  ' il suffit de désigner n'importe quel dialogue de son application
   
   odlg.setPosSize(0,0,x,y,com.sun.star.awt.PosSize.POSSIZE)  ' cette ligne le redimensionne de manière à ce qu'il occupe la totalité de l'écran
   x= odlg.model.width  ' on interroge les dimensions du dialogue pour connaitre les dimensions de l'écran en ma
   y= odlg.model.height

msgbox "résolution de l'écran en ma = " & x & " x " & y

   oRes = nothing
   oTk = nothing
   oDA = nothing
   oDlg.dispose
End Sub
Dernière édition par TChatenet le 22 Avr 2014 03:35, édité 2 fois.
Libre Office Version 4.1.5.3 sous W8.1
Libre Office Version 3.5.4.2 sous Ubuntu 12.04 /64
TChatenet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 79
Inscrit le : 02 Juin 2012 12:54

Re: [Base] Maximiser un formulaire

Messagepar Piaf » 21 Avr 2014 17:31

Bonsoir
TChatenet a écrit:Par ailleurs les coordonnées des dialogues
titre du fil [Base] Maximiser un formulaire
La première solution avait l'avantage de fournir la taille de l'écran, mais si LibO estime cela non utile !
Après je suis sous Linux et autant que je sache, AOO et LibO sont multiplateformes, donc l'utilisation des DLL Windows dans les macros ?
A+
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] Maximiser un formulaire

Messagepar TChatenet » 21 Avr 2014 18:04

Après je suis sous Linux et autant que je sache, AOO et LibO sont multiplateformes, donc l'utilisation des DLL Windows dans les macros ?

Je sais bien , mais je t'assure que mes recherches sur le sujet ne m'ont rien permis d'autre que de lire les lamentations de tous ceux qui , comme moi , avaient besoin de connaitre les dimensions de l'affichage et se trouvaient sans solution depuis la suppression de com.sun.star.awt.DisplayAccess.
Les utilisateurs Windows peuvent s'en sortir en utilisant les Dll en attendant que le problème soit résolu , les autres : je ne sais pas .
Le but de ma contribution était surtout fournir une solution permettant de calculer cette fameuse résolution en ma . Ce truc peut être utile à tout le monde une fois l'écueil de la lecture de la résolution passé .
J'ai pensé utile de le mettre à la suite de ton fil car il me semblait le compléter , mais si cela te froisse je peux le supprimer , pas de souci :) .
Bonne soirée
Libre Office Version 4.1.5.3 sous W8.1
Libre Office Version 3.5.4.2 sous Ubuntu 12.04 /64
TChatenet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 79
Inscrit le : 02 Juin 2012 12:54

Re: [Base] Maximiser un formulaire

Messagepar Piaf » 21 Avr 2014 19:07

Re
TChatenet a écrit:mais si cela te froisse je peux le supprimer
Non au contraire.
Ce qui me chagrine c'est d'avoir à utiliser une dll Windows pour remplacer un service multiplateformes qui existait.
Mais toi ou moi n'y sommes pas pour grand chose. (Régression ??? :lol: )
 Ajout : Suite à une judicieuse intervention d'Alain de La Chaume, il se trouve que Dude avait déjà trouvé le contournement (quand les ténors s'en mêlent :lol: )
Code : Tout sélectionner   AgrandirRéduire
Sub ResoEcran
   x = 0 : y = 0
   oDa = CreateUnoService("com.sun.star.awt.DisplayAccess")
   oTK = thisComponent.currentController.componentWindow.toolkit
   If Not isNull(oDa) Then
      oRes = oDa(0).screenArea
      x = oRes.Width : y = oRes.Height
      MsgBox "Vous êtes sous AOO et la Résolution est de : " & x & " x " & y
   ElseIf Not isNull(oTk) Then
      oRes = oTK.workArea
      x = oRes.Width : y = oRes.Height
      MsgBox " Vous êtes sous LibO et la Résolution est de : " & x & " x " & y        
   EndIf
End Sub
 
A+
Pièces jointes
ResolutionEcran.odb
(4.11 Kio) Téléchargé 227 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] Maximiser un formulaire

Messagepar TChatenet » 22 Avr 2014 02:54

Nickel ça fonctionne chez moi à quelques pixels près .
J'avais bien vu sur les forums anglophones que certains citaient le toolkit mais my very poor english ne m'avait pas permis de comprendre la solution .
Je corrige ma précédente intervention :super:
Libre Office Version 4.1.5.3 sous W8.1
Libre Office Version 3.5.4.2 sous Ubuntu 12.04 /64
TChatenet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 79
Inscrit le : 02 Juin 2012 12:54

Re: [Base] Maximiser un formulaire

Messagepar creym » 13 Oct 2016 13:34

Bonsoir,

Vraiment bien ta macro MaximizeWindow, ManitOOu
Parfaite avec LbreOffice 5.1.4.2 sous Ubuntu 16.04

Merci j'avais une ancienne qui fonctionnaits avec OpenOffice sous Windows mais qui bloquait ici :bravo:
Windows 10 - LibreOffice 6.15.2.
Avatar de l’utilisateur
creym
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 20 Avr 2015 14:24


Retour vers Suprême de code

Qui est en ligne ?

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