Depuis la 5.60, lorsqu'on ajoute une barre d’icône et une barre d'état, l'initialisation de la hauteur ne se fait pas bien si on laisse le programme générer la procédure de resize.
(Pour rappel, cette procédure se créée automatiquement dès qu'on change l'ancrage par défaut d'au moins un gadget)
Cette fonction est très utile car on peut tout déplacer sans s'occuper de chaque objet.
Voici un pbf exemple: lancez-le seul, l'EditorGadget occupe bien toute la hauteur
Il y a bien un message d'avertissement qui dit que MenuHeight() et ToolBarHeight() sont dépréciés (c'est normal)
Ils sont bien mis à zéro, ce qui est normal.
560_Form.pbf
Code : Tout sélectionner
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
Enumeration FormWindow
#Window_0
EndEnumeration
Enumeration FormGadget
#Editor_0
EndEnumeration
Declare ResizeGadgetsWindow_0()
Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
OpenWindow(#Window_0, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
CreateToolBar(0, WindowID(#Window_0))
ToolBarSeparator()
CreateStatusBar(0, WindowID(#Window_0))
AddStatusBarField(50)
StatusBarText(0, 0, "Label")
CreateMenu(0, WindowID(#Window_0))
MenuTitle("MenuTitle")
EditorGadget(#Editor_0, 0, ToolBarHeight(0) + 0, 600, 333)
EndProcedure
Procedure ResizeGadgetsWindow_0()
Protected FormWindowWidth, FormWindowHeight
FormWindowWidth = WindowWidth(#Window_0)
FormWindowHeight = WindowHeight(#Window_0)
ResizeGadget(#Editor_0, 0, ToolBarHeight(0) + 0, FormWindowWidth - 0, FormWindowHeight - MenuHeight() - ToolBarHeight(0) - StatusBarHeight(0) - 0)
EndProcedure
Code : Tout sélectionner
XIncludeFile "560_Form.pbf"
OpenWindow_0()
BindEvent(#PB_Event_SizeWindow, @ResizeGadgetsWindow_0())
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
Ce qui, je pense doit correspondre à la hauteur réservée pour une barre de bouton en mode large ?
Solution (provisoire) Comme je me suis rendu compte que cela se remet bien dès qu'on modifie la taille de la fenêtre, j'invoque donc le redimensionnement 1 fois dès l'ouverture avec ResizeGadgetsWindow_0()
Ce qui donne:
Code : Tout sélectionner
XIncludeFile "560_Form.pbf"
OpenWindow_0()
ResizeGadgetsWindow_0() ; <--- Ajouté pour forcer la mise à jour.
BindEvent(#PB_Event_SizeWindow, @ResizeGadgetsWindow_0())
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
(Je ne suis pas assez bon en anglais pour mettre ça dans les bugs reports.)