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

Classe: wxGridBagSizer()

Ce sizer est dérivé de wxFlexGridSizer et permet un positionnement explicite des "cases" à l'aide de wxGBPosition et wxGBSpan.

Ce Widget permet d'aligner des objets dans des cellules de dimensions différentes.

Un peu comme dans un "tableau" avec le "html", ou un tableur classique.!

Mode d'emploi.
  1. Créer l'objet wx.wxBoxSizer avec une propriété verticale ou horizontale.
  2. Créer l'objet wx.wxGridBagSizer.
  3. Créer les objets à insérer dans le tableau.
  4. Additionner ces objets au wx.wxGridBagSizer.
  5. Additionner wx.wxGridBagSizer au Sizer principal.
  6. Affecter le wx.wxBoxSizer au panel, dialog ou frame.

Plusieurs classes peuvent-être utilisées pour gérer les "items" avec wxGridBagsizer().

  • wxGBSizerItem est utilisé pour le suivi des articles dans le sizer.
  • wxGBPosition représente la position d'un élément dans une grille virtuelle de lignes et de colonnes. Origine: wxGBPosition(0, 0)
  • wxGBSpan représente la ligne et le nombre de colonne(s) utilisées pour insérer un élément. par défaut: wxGBSpan(1, 1)
  • wxSize représente la taille.
Le constructeur.
bagSizer = wx.wxGridBagSizer( interval_V, interval_H)
-- paramètres facultatifs pour spécifier l'intervalle entre 
-- les lignes et les colonnes.

bagSizer:Add(param1, param2, param3, param4, param5)
				

Si le schéma global reste identique aux autres Sizers, en revanche l'addition des objets dans le wxGridBagSizer est lui complètement différent et peut suivre l'un des protocoles suivants:

  • param1 - Nom de l'objet à mettre dans le sizer.
  • param2 - Positionnement de la case à occuper qui commence à 0: wx.wxGBPosition (N°ligne, N°colonne)
  • param3 - Définition du nombre de cases qui seront occupées: wx.wxGBSpan(nombre Lignes, nombre Colonnes) ( par défaut: wx.wxGBSpan(1, 1)
  • param4 - Insertion des "flags".(1)
  • param5 - Espace en pixels entre les bords du sizer et de la fenêtre.

(1)
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 "+".

Si vous voulez rendre certaines lignes ou certaines colonnes extensibles, vous devez rajouter les méthodes suivantes, autant de fois que nécessaire:
bagSizer:AddGrowableCol(N° de la Colonne)
bagSizer:AddGrowableRow(N° de la ligne)

Attention: Le N° de la première ligne = 0 et le N° de la colonne = 0.

Les méthodes.

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

Pour Ajouter un objet au wxGridBagSizer.
Add(objetWindow, wx.wxGBPosition(li, co), wx.wxGBSpan(li, co), flag, border)
Add(objetSizer, wx.wxGBPosition(li, co), wx.wxGBSpan(li, co), flag, border)
Add(width, height, wx.wxGBPosition(li, co), wx.wxGBSpan(li, co), flag, border)
Add(objetGBSizerItem)

Pour vérifier si les "items" se croisent ou se chevauchent..
Ces méthodes renverront "true" ou "false" suivant le cas.
CheckForIntersection(objetGBSizerItem, wxGBSizerItem* excludeItem = NULL)
CheckForIntersection(wx.wxGBPosition(li, co), wx.wxGBSpan(li, co), wxGBSizerItem* excludeItem = NULL)

Pour trouver un élément donné.
FindItem(objetWindow)Trouve l'élément Sizer de la fenêtre donnée ou subsizer, ou NULL si non trouvé.
FindItem(objetSizer)Trouve l'élément Sizer de la fenêtre donnée ou subsizer, ou NULL si non trouvé.
FindItemAtPoint(wx.wxPoint(x, y)Retourne l'"item" situé au pt(x, y), ou NULL.
FindItemAtPosition(wx.wxGBPosition(li,co))Retourne l'"item" positionné (li, co) , ou NULL.
FindItemWithData(wx.wxObject*userData)Retourne l'"item" sizer qui a une base de données utilisateur correspondante (il ne compare que les valeurs de pointeur) ou NULL si non trouvé.

Pour obtenir la taille de la cellule.
GetCellSize (li, co)Obtient la taille de la cellule spécifiée.
GetEmptyCellSize()Obtient la taille des cellules vides.

Pour trouver la position de la grille.
GetItemPosition(objetWindow)Retourne la position de la grille de l'élément spécifié.
GetItemPosition(objetSizer)Retourne la position de la grille de l'élément spécifié.
GetItemPosition(size_t index)Retourne la position de la grille de l'élément spécifié.

Pour trouver l'emplacement ligne/colonne.
GetItemSpan(objetWindow)Retourne la ligne/colonne de l'élément spécifié.
GetItemSpan(objetSizer)Retourne la ligne/colonne de l'élément spécifié.
GetItemSpan(size_t index)Retourne la ligne/colonne de l'élément spécifié.

Pour définir la position de l'élément spécifié.
SetEmptyCellSize(wx.wxSize(x, y))
SetItemPosition(objetWindow, wx.wxGBPosition(li, co))
SetItemPosition(objetSizer, wx.wxGBPosition(li, co))
SetItemPosition(size_t index, wx.wxGBPosition(li, co))

Pour définir la ligne/colonne de l'élément spécifié.
SetItemSpan(objetWindow, wx.wxGBSpan(li, co))
SetItemSpan(objetSizer, wx.wxGBSpan(li, co))
SetItemSpan(size_t index, wx.wxGBSpan(li, co))
Un petit exemple.
require("wx") -- inutile si on utilise wxluafreeze.exe			

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

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

-- Création de plusieurs objets.
local objet01 = wx.wxButton(panel, -1, "01")
local objet02 = wx.wxButton(panel, -1, "02")
local objet03 = wx.wxButton(panel, -1, "03")
local objet04 = wx.wxButton(panel, -1, "04")
local objet05 = wx.wxButton(panel, -1, "05")
local objet06 = wx.wxButton(panel, -1, "06")

-- Création des Sizers.
local mainSizer = wx.wxBoxSizer(wx.wxVERTICAL)
local bagSizer	= wx.wxGridBagSizer() 

-- Extension de la colonne 1 (càd de la deuxième!) 
-- en cas d'extension horizontale
bagSizer:AddGrowableCol(1)

-- Extension de la ligne 0 (càd de la première!) 
-- en cas d'extension verticale
bagSizer:AddGrowableRow(0)

-- addition des objets aux sizers.(ligne, colonne)
bagSizer:Add(objet01, wx.wxGBPosition(0, 0), wx.wxGBSpan(1, 2),
                wx.wxGROW + wx.wxALL + wx.wxALIGN_CENTER, 5)
bagSizer:Add(objet02, wx.wxGBPosition(0, 2), wx.wxGBSpan(1, 1),
                wx.wxGROW + wx.wxALL + wx.wxALIGN_CENTER, 5)
bagSizer:Add(objet03, wx.wxGBPosition(1, 0), wx.wxGBSpan(1, 3), 
                wx.wxGROW + wx.wxALL + wx.wxALIGN_CENTER, 5)
bagSizer:Add(objet04, wx.wxGBPosition(2, 0), wx.wxGBSpan(1, 1), 
                wx.wxGROW + wx.wxALL + wx.wxALIGN_CENTER, 5)
bagSizer:Add(objet05, wx.wxGBPosition(2, 1), wx.wxGBSpan(2, 1), 
                wx.wxGROW + wx.wxALL + wx.wxALIGN_CENTER, 5)
bagSizer:Add(objet06, wx.wxGBPosition(3, 2), wx.wxGBSpan(1, 1), 
                wx.wxGROW + wx.wxALL + wx.wxALIGN_CENTER, 5)

-- Addition bagSizer dans mainSizer.
mainSizer:Add(bagSizer, 1, wx.wxGROW + wx.wxALL, 10)

-- 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.
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 31 octobre 2012.
Valid XHTML 1.0 Transitional

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