[5.60b1] FormDesigner et hauteur

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

[5.60b1] FormDesigner et hauteur

Message par Marc56 »

J'utilise le Form Designer pour tous mes projets.
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
Maintenant, lancez ce code, qui appelle le PBF

Code : Tout sélectionner

XIncludeFile "560_Form.pbf"

OpenWindow_0()

BindEvent(#PB_Event_SizeWindow, @ResizeGadgetsWindow_0())

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
L'EditorGadget a perdu 32 points de hauteur.
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
Voilà, hope this help.
(Je ne suis pas assez bon en anglais pour mettre ça dans les bugs reports.)
8)