Classe: wxGridSizer()
Ce sizer est bidimensionnel.!
C'est à dire qu'il détermine la taille du plus grand de ses enfants, selon les deux directions horizontale et verticale, et applique ces dimensions à toutes les "cases" de la grille.
bagSizer = wx.wxGridSizer(nbLignes, nbColonnes,
ecartVertical, ecartHorizontal)
bagSizer:Add(param1, param2, param3, param4)
(1)
zéro ou rien, 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'alignement 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 "+".
Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.
| GetCols() | Retourne le nombre de colonnes du sizer. |
| GetHGap() | Retourne l'écart horizontal (en pixels) entre les cellules dans le sizer. |
| GetRows() | Retourne le nombre de lignes du sizer. |
| GetVGap() | Retourne l'écart vertical (en pixels) entre les cellules dans le sizer. |
| SetCols(cols) | Définit le nombre de colonnes dans le sizer |
| SetHGap(ecart) | Définit l'écart horizontal (en pixels) entre les cellules dans le sizer. |
| SetRows(lignes) | Définit le nombre de lignes dans le sizer. |
| SetVGap(ecart) | Définit l'espace vertical (en pixels) entre les cellules dans le s |
Vous allez trouver dans le code suivant, un appel à: tostring(). Il s'agit d'une fonction de base Lua.
Voir à ce sujet, le chapitre consacré à ce langage.
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, "wxGridSizer")
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 propiété verticale.
local mainSizer = wx.wxBoxSizer(wx.wxVERTICAL)
-- Soit 3 lignes de 2 colonnes avec 10px entre les lignes
-- et 5px entre les colonnes.
-- Construction de l'objet gridSizer.
local gridSizer = wx.wxGridSizer(3, 2, 10, 5)
for i = 1, 6 do
local bouton = wx.wxButton(panel, -1, tostring(i))
gridSizer:Add(bouton, 0, wx.wxGROW)
end
-- tostring(i): transforme (i)nombre en (i)chaîne de caractères.
-- On ajoute le gridSizer dans le mainSizer
mainSizer:Add(gridSizer, 1, wx.wxGROW, 0)
-- On affecte le mainSizer au panel.
panel:SetSizer(mainSizer);
-- On fixe une taille minimale de la frame au démarrage.
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, avec une fenêtre extensible.
