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

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.

Mode d'emploi.
  1. Créer l'objet wx.wxBoxSizer avec une propriété verticale ou horizontale.
  2. Créer l'objet wx.wxGridSizer avec ses lignes et colonnes.
  3. Insérer les différents objets dans wx.wxGridSizer.(Add)
  4. Insérer wx.wxFlexGridSizer dans wx.wxBoxSizer.(Add)
  5. Affecter le wx.wxBoxSizer au panel, dialog ou frame.
Le constructeur.
bagSizer = wx.wxGridSizer(nbLignes, nbColonnes, 
                          ecartVertical, ecartHorizontal)

bagSizer: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 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 "+".

Les méthodes.

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
Un petit exemple.

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.

image01

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

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