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

Classe: wxListBox().

Une ListBox est utilisée pour sélectionner un ou plusieurs éléments d'une liste d'articles.

Les articles sont affichés dans une scrolling box. L'article, sélectionné est affiché en vidéo inverse.

Les éléments de la liste sont numérotés à partir de zéro et leur nombre peut être limité suivant certaines plates-formes.

Liste des styles utilisés.
  • wxLB_SINGLE
    Liste à sélection unique
  • wxLB_MULTIPLE
    Choix Multiple. l'utilisateur peut basculer sur plusieurs articles.
  • wxLB_EXTENDED
    Une sélection élargie de liste. l'utilisateur peut étendre la sélection en utilisant la touche MAJ ou CTRL avec les touches de déplacement ou le curseur de la souris.
  • wxLB_HSCROLL
    Créer une barre de défilement horizontale, si le contenu est trop large (Windows uniquement).
  • wxLB_ALWAYS_SB
    Affiche toujours une barre de défilement verticale.
  • wxLB_NEEDED_SB
    Créer une barre de défilement verticale uniquement si nécessaire.
  • wxLB_SORT
    Le contenu de la listbox est trié par ordre alphabétique.

Notez que les tyles wxLB_SINGLE , wxLB_MULTIPLE et wxLB_EXTENDED sont mutuellement exclusifs. (une seule sélection par défaut).

Liste des évènements émis par cette classe.
  • wxEVT_COMMAND_LISTBOX_SELECTED
    (id, wx.wxEVT_COMMAND_LISTBOX_SELECTED, function)
    Traite l'évènement, lorsqu'un élément de la liste est sélectionné.
  • wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
    (id, wx.wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, function)
    Traite l'évènement, lorsque l'article sélectionné est double-cliqué.
Le constructeur.
	listBox = wx.wxListBox (
		wxWindow            * parent       = no-NULL,
		wxWindowID            id           = -1,
		const wxPoint       & pos          = wx.wxDefaultPosition,
		const wxSize        & size         = wx.wxDefaultSize,
		const wxArrayString & choice       = nom du tableau,
		long  style                        = wx.wxLB_XXXX,
		const wxValidator   & validator    = wx.wxDefaultValidator,
		const wxString      & name         = "nom de la listBox"
		)

parent fenêtre Parent. Ne doit pas être NULL.

id N° d'identification de la listBox. -1 indique une valeur par défaut.

pos position de la listBox.

size taille de la listBox.

choice un tableau de chaînes de caractères pour initialiser le contrôle.

style est le style de la boîte de dialogue.

validator est utilisé dans le cas d'un appel à un validateur.

name est utilisé pour associer un nom à la listBox.

Les méthodes.

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

Deselect(int n)Désélectionne l'élément de la liste indexé (n).
GetSelections()Retourne le N° de la ligne sélectionnée.
HitTest(objetPoint)Retourne l'élément situé aux coordonnées objetPoint. (objetPoint = wx.wxPoint())
InsertItems(string[], pos)Insére le nombre de stringdonné avant la position spécifiée (pos).
IsSelected(n)Détermine si un élément est sélectionné.
Set(wxArrayString& choices)Ajoute la nouvelle liste qui lui est donnée.(prevoir de l'effacer avant avec Array:Empty())
SetFirstItem(n)Régle l'élément spécifié pour être le premier élément visible.
SetSelection(n, true)Définit la sélection à l'élément donné en (n) ou la supprime si n = wxNOT_FOUND.
SetStringSelection("string", true)Sélectionne l'élément avec la chaîne "string" spécifiée.

Un petit exemple.

Vous allez trouver dans le code suivant, un appel à: os.date("*t") et os.date("!*t").
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 de la frame et de son panel.
local frame = wx.wxFrame(wx.NULL, -1, "wxListBox", 
                      wx.wxDefaultPosition, wx.wxSize(500, 250))
local panel = wx.wxPanel(frame, -1)
frame:Centre(wx.wxBOTH) 

-- Création des listes.
local zone01 = {"CET", "GMT", "MSK", "EST", "PST", "EDT"}
local zone02 = {
	"Heure normale de l'Europe Centrale.",
	"Heure Universelle de GREENWICH.",
	"Heure normale de Moscou.",
	"Heure normale de l'Est des Etats-Unis.",
	"Heure normale du Pacifique.",
	"Heure d'été de l'Est des Etats-Unis." }
local zone_diff = {1, 0, 3, -5, -8, -4 }

-- Création des sizers.
mainSizer  = wx.wxBoxSizer(wx.wxVERTICAL) -- sizer principal
hBox1 = wx.wxBoxSizer(wx.wxHORIZONTAL)    -- sizer listBox
 -- sizer V pour textCtr et staticTexte
vBox2 = wx.wxBoxSizer(wx.wxVERTICAL)  
 -- sizer pour regrouper vBox2 
hBox2 = wx.wxBoxSizer(wx.wxHORIZONTAL)
hBox3 = wx.wxBoxSizer(wx.wxHORIZONTAL)    -- sizer Bouton

-- Création de la listeBox et mise en place dans son Sizer.
local listBox = wx.wxListBox(panel, -1, wx.wxDefaultPosition, 
                 wx.wxSize(100, 100), zone01, wx.wxLB_SINGLE)
listBox:SetSelection(0)
hBox1:Add(listBox, 0, wx.wxTOP, 40)

-- Création d'un textCtrl et mise en place dans son Sizer.
local texte = "Heure normale de l'Europe Centrale. \n"
local textCtrl = wx.wxTextCtrl(panel, -1, texte, 
                  wx.wxDefaultPosition, wx.wxSize(250, 50), 
				  wx.wxTE_MULTILINE + wx.wxTE_NO_VSCROLL)
vBox2:Add(textCtrl, 0)

-- Création d'un staticTexte et mise en place dans son Sizer.
local staticTexte = wx.wxStaticText(panel, -1, "")
vBox2:Add(staticTexte, 0, wx.wxTOP, 15)

-- Regroupement des deux sizers vBox2 dans hBox1
hBox2:Add(vBox2, 0, wx.wxLEFT + wx.wxTOP, 40)
hBox1:Add(hBox2, 0)

-- Bouton de fermeture et mise en place dans son Sizer.
local btn = wx.wxButton(panel, wx.wxID_CLOSE, "Fermeture")
hBox3:Add(btn, 0, wx.wxALIGN_CENTRE)

-- Mise en place des Sizers
mainSizer:Add(hBox1, 0, wx.wxALIGN_CENTRE)
mainSizer:Add(hBox3, 1, wx.wxALIGN_CENTRE)
panel:SetSizer(mainSizer)

-- Relevé de l'heure GMT.
local dtGmt = os.date("!*t")
local hGmt  = dtGmt.hour
local mnGmt = dtGmt.min
print(dtGmt)
textCtrl:AppendText("Heure locale: "..hGmt + zone_diff[1]..
                    " h et "..mnGmt.." min")

-- Relevé de l'heure locale.
local dtLoc = os.date("*t")
local hLoc  = dtLoc.hour
local mnLoc = dtLoc.min

staticTexte:SetLabel("Heure locale, en FRANCE: " .. hLoc .. 
                     " h et " .. mnLoc .." min")

-- Gestion des sélections.
listBox:Connect(-1, wx.wxEVT_COMMAND_LISTBOX_SELECTED, 
    function(event)
		local numItem = listBox:GetSelection()
		local choix   = listBox:GetString(numItem)
		diff = zone_diff[numItem+1]
		textCtrl:SetValue(zone02[numItem+1].. "\n")
		textCtrl:AppendText("Heure locale: "..hGmt + diff..
		                    " h et "..mnGmt.. " min")
	end)

btn:Connect(wx.wxID_CLOSE, wx.wxEVT_COMMAND_BUTTON_CLICKED,
    function (event) frame:Destroy(); event:Skip() end)
	
-- 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 15 décembre 2012.
Valid XHTML 1.0 Transitional

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