wxLua et wxWidgets:
Mode d'emploi.
 wxWidgets
Lua
Flèche gauche accueil wxWidgets lua notes Flèche droite
Description détaillée.

Classe: wxBoxSizer().

Ce sizer positionne ses enfants verticalement, ou horizontalement, en fonction du paramètre spécifié dans son constructeur.
Quand la position verticale est utilisée, chaque enfant peut être centré ou aligné à droite ou à gauche.
Dans la position horizontale, chaque enfant peut être centré ou aligné en bas ou en haut.
Le facteur d'agrandissement s'applique seulement dans la direction principale du sizer, c'est-à-dire que pour un sizer horizontal il déterminera l'agrandissement d'un élément dans le sens horizontale et pour un sizer vertical, il déterminera l'agrandissement d'un élément dans le sens vertical.

Mode d'emploi.
  1. Créer l'objet wx.wxBoxSizer avec une propriété verticale ou horizontale.
  2. Créer les objets à insérer dans le sizer: par exemple 'TextCtrl' et 'Button'.
  3. Additionner les objets au wxw.wxBoxSizer.
  4. Affecter le wx.wxBoxSizer au panel, dialog ou frame.
Le constructeur: Explication.
mainSizer = wx.wxBoxSizer(wx.wxVERTICAL) -- ou wx.wxHORIZONTAL 
mainSizer:Add(param1, param2, param3, param4)
				
  • param1 - nom de l'objet à mettre dans le sizer.
  • param2 - Définition du ratio de départ.(1)
  • param3 - Positionnement et extension du sizer.(2)
  • param4 - Espace en pixels entre les bords du sizer et de la fenêtre. (autrement appelé "padding"..)

(1)
zéro ou 1, indique que les objets insérés au sizer, conserveront leur dimension original dans le sens defini. (vertical ou horizontal).

(2)
wx.wxGROW (ou wx.wxEXPAND), force la fenêtre à grandir avec le sizer.
wx.wxSHAPED indique à la fenêtre de changer de dimension tout en préservant le ratio original.
Quand le flag wx.wxGROW n'est pas utilisé, l'élément peut être aligné dans l'espace disponible en fonction des indication suivantes:
wx.wxALIGN_LEFT, wx.wxALIGN_TOP, wx.wxALIGN_RIGHT, wx.wxALIGN_BOTTOM,
wx.wxALIGN_CENTER_HORIZONTAL et wx.wxALIGN_CENTER_VERTICAL.
wx.wxALIGN_CENTER précise un alignement Vertical et horizontal.

Par défaut, l'allignement est wx.wxALIGN_TOP + wx.wxALIGN_LEFT.(en haut à gauche)
Une fenêtre appartenant à un sizer peut avoir une bordure, dont les cotés affichés peuvent être spécifiés.
Utilisez wx.wxTOP, wx.wxLEFT, wx.wxRIGHT et wx.wxBOTTOM ou wx.wxALL pour les 4 cotés.
Ces bordures sont invisibles, mais indispensable pour pouvoir créer une marge interne ou "padding".
Pour additionner différents "flags" dans le param3, utilisez le signe "+".

Les méthodes.

Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.

SetAutoLayout(true)*Détermine si la fonction de mise en page sera appelée automatiquement lorsque la fenêtre sera redimensionnée.
SetSizer(mainSizer)Définit la fenêtre (frame, panel, dialog...) qui supportera le Sizer.
SetSizeHints(frame)**Cette méthode appelle en premier Fit() puis wxTopLevelWindow:SetSizeHints() sur la fenêtre qui lui est passée.
Fit(frame)Redimensionne la fenêtre de telle sorte que sa zone cliente corresponde à la taille minimale du sizer (ComputeFittingClientSize() est appelée pour le déterminer).
GetOrientation()Retourne l'orientation du sizer, soit wxVERTICAL ou wxHORIZONTAL.

* Cette méthode étant appelée implicitement par SetSizer() n'est donc pas nécessaire, sauf dans le cas ou vous auriez utilisé SetConstraints()

** Cette méthode n'a de sens que si la fenêtre est une "topLevel" comme wxFrame ou wxDialog et n'a aucun effet sur les autres classes.

Un exemple de code.
require("wx") -- inutile si on utilise wxluafreeze.exe

-- Création d'une frame et de son panel.
local frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "wxBoxSizer")
local panel = wx.wxPanel(frame, -1)

-- Centrage de la frame au milieu de l'écran.
frame:Centre()	

-- Création de l'objet sizer avec une propriété verticale.
local mainSizer = wx.wxBoxSizer(wx.wxVERTICAL)

-- Création de deux contrôles, dont le parent est le panel 
-- et non le sizer.
local textEntry = wx.wxTextCtrl	(panel, -1, "Texte de contrôle")
local button	= wx.wxButton	(panel, -1, "Bouton de test")

-- On additionne dans le sizer les objets textEntry et button.
mainSizer:Add(textEntry, 1, wx.wxGROW + wx.wxALL, 6)
mainSizer:Add(button, 1, wx.wxGROW + wx.wxALL, 6)

-- On affecte le mainSizer au panel.
panel:SetAutoLayout(true)
panel:SetSizer(mainSizer)

-- Optionnel, mais ceci fixe une taille minimale initiale, 
-- juste assez pour voir les différents contrôles. 
-- (surtout utile pour les boîtes de dialogues.)
mainSizer:SetSizeHints(frame)
mainSizer:Fit(frame)

-- Démarrage de l'application.
wx.wxGetApp():SetTopWindow(frame)
frame:Show(true)
wx.wxGetApp():MainLoop()				
				

Ce qui donne comme résultat.

image01

logo wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 26 octobre 2012.
Valid XHTML 1.0 Transitional

wxBoxSizer
Revenir en Haut
Connexion à la base de données impossible