trouvez ci apres une macro que vous pouvez utiliser lors des chargements de formulaire MACRO2, ou en appel dynamique MACRO1 lors d'un clic bouton de formulaire pour en appeler un autre.
MACRO1: EN APPEL DYNAMIQUE LORS D'UNE MACRO
' ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
' ║ RESIZE ROUTINES
' ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════╝█
' ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
' xCurrentController ( relatif àau formulaire actif, donc permet de spécifier un controlleur de formulaire précis
' iWidth,iHeight, dimension souhaité en points du formulaire ( pas très pratique lorsque libre office vous affiche des cm)
' Hide as boolean status des barres d'outils et menus (faux = caché, true = affiché)
'
MACRO2: CODE MACRO POUR EVENEMENT CHARGEMENT DE FORMULAIRE (mode édition: menu formulaire/propriétés du formulaire/onglet événements)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Sub ResizeFormAndHideMenu(xCurrentController as object,iWidth,iHeight,Hide as boolean) Dim xLayoutManager as Object Dim vRect as Object Dim intHeight as Integer Dim intWidth as Integer Dim intXPos as Integer Dim intYPos as Integer If xCurrentController.isFormDesignMode Then Exit Sub End If xLayoutManager = xCurrentController.Frame.LayoutManager xLayoutManager.visible = Hide If IsNull(xCurrentController.Frame) then exit sub vRect = xCurrentController.Frame.ContainerWindow.PosSize intXPos=vRect.X intYPos=vRect.Y intHeight=(iHeight * 1.00) intWidth=(iWidth * 1.00) ' Ceci par ce que la gestion des barres de défilement est merdique lorsque l'on est au raz des contrôles..... xCurrentController.Frame.ContainerWindow.setPosSize(intXPos, intYPos, intWidth+20, intHeight+20, 15) ' Enfin le dimensionnement souhaité xCurrentController.Frame.ContainerWindow.setPosSize(intXPos, intYPos, intWidth, intHeight, 15) End Sub
PS: JE NE SAIS PAS POUR QUELLE RAISON le dimensionnement de certains FORMULAIRES ne fonctionne pas quoi que vous fassiez ( sauf en forçage dynamique ) avec la macro événementielle....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 sub Formulaire1OnLoadResize Dim Controller as Object Controller = thisComponent.CurrentController ResizeFormAndHideMenu(Controller,720,265,false) end sub
Partager