He estado haciendo el ejemplo del componente ListVew del manual en ingles sobre gambas. "A Begginer's Guide to gambas".
Se que es para la versión 1.X, pero eso no quita que sirva de base para aprender.
En concreto desde la pagina 158. También he encontrado un ejemplo muy parecido en un tutorial sobre gambas, que es casi calcado
al ejemplo del libro.
Los problemas que encuentro:
Si no activo gb.qt, me da elemento invalido o objecto invalido. Creo que es por la selección que tiene el puntero interno
del componente ListView. Si activo el componente gb.qt, no hay problemas.
¿ Entonces gambas fue pensado para KDE y no Gnome ?.(Siempre hay algún componente por ahí que necesita usar gb.qt)
Sigamos.
Los iconos no salen.Solo veo el texto.¿ Hay un tamaño concreto para los iconos del ListVIew ?.
Cree el icono del cuadrado y el circulo con el editor de iconos de gambas con un tamaño de 32 y formato PNG.
Os adjunto el código en ingles, no le encuentro un error, salvo la errata de la declaración de la variable sStatus.
Que aquí la declare como Private.
' gambas class file
Private sStatus as String
PUBLIC SUB Form_Open()
DIM picSquare AS NEW Picture
DIM picCircle AS NEW Picture
picCircle.Load("circle.png")
picSquare.Load ("square.png")
ListView1.Add ("ListItem1","ListItem1", picSquare)
TextLabel1.Text = ListView1.Item.Text
ListView1_Click
END
PUBLIC SUB ListView1_Click()
ListView1.MoveCurrent
ListView1.Item.Selected = TRUE 'En este punto da error si no tienes activo gb.qt
TextLabel1.Text = ListView1.Item.Text & sStatus
END
PUBLIC SUB Button1_Click()
DIM picToUse AS NEW Picture
IF Textbox1.Text <> NULL THEN
IF RadioButton1.Value THEN
picToUse.Load("square.png")
ELSE
picToUse.Load("circle.png")
END IF
ListView1.MoveCurrent()
ListView1.Add(Textbox1.Text,Textbox1.Text,picToUse)
TextBox1.Text = ""
sStatus = " current." 'set status to “current”
ListView1_Click
ListView1.Item.EnsureVisible
END IF
END
PUBLIC SUB Button2_Click()
IF ListView1.MoveCurrent() THEN RETURN
ListView1.Remove(ListView1.Item.Text)
TextLabel1.Text = ""
IF ListView1.Count > 0 THEN
ListView1.MoveCurrent
ListView1.Item.Selected = TRUE 'Selects the current item
sStatus = “ selected.”
ListView1_Click 'this will force an update
END IF
END
PUBLIC SUB ListView1_Select()
TextLabel1.Text = ListView1.Item.Text
sStatus = “ selected.”
ListView1_Click
END
PUBLIC SUB ListView1_Activate()
TextLabel1.Text = ListView1.Item.Text & “ activated.”
sStatus = “ activated.”
ListView1_Click
END
Saludos!.