Gambas-it

Gambas3 => Programmazione => Topic aperto da: tornu - 01 Novembre 2015, 20:42:31

Titolo: [Risolto] ListView
Inserito da: tornu - 01 Novembre 2015, 20:42:31
Buonasera a tutti
ho a che fare con una ListView, vorrei che quando seleziono un' elemento della stessa potessi evidenziarlo
con un colore a mia scelta. Ho provato a fare una ricerca per avere un'idea ma non ho trovato niente.
Confido in un vostro aiuto.
Titolo: Re:ListView
Inserito da: Gianluigi - 01 Novembre 2015, 22:48:23
Scusa approfitto di una pausa pubblicitaria, qualcosa del genere potrebbe servirti:

Codice: [Seleziona]
ListView1.Add("pi", "Pippo")
ListView1.Foreground = Color.Blue
ListView1.Add("pl", "Pluto")
ListView1["pl"].RichText = "<font color=\"red\">" & ListView1["pl"].Text & "</font>"

 :ciao:
Titolo: Re:ListView
Inserito da: tornu - 02 Novembre 2015, 00:06:22
Ciao Gianluigi,
forse mi sono spiegato male (solito mio problema) e chiedo scusa, quello che mi seve é:
Listview diciamo con 10 righe
Selezionando una riga la proprietà Background assume il colore blu e il testo (Foreground) bianco,
solo per la riga selezionata.
Selezionando un'altro elemento quello precedente riassume i valori Background e Foreground di default
e la nuova riga selezionata Background = Blu e Foreground = Bianco, ecc...
Spero di essere stato più chiaro.
Titolo: Re:ListView
Inserito da: Gianluigi - 02 Novembre 2015, 00:52:14
Scusa ma non capisco, una cosa così non ti andrebbe bene?
Codice: [Seleziona]
' Gambas class file
Private s1 As String
Private s2 As String

Public Sub Form_Open()

  ListView1.Add("1", "Pippo")
  ListView1.Add("2", "Pluto")
  ListView1.Add("3", "Paperino")
  ListView1.Add("4", "Gastone")
  ListView1.Add("5", "Qui")
  ListView1.Add("6", "Quo")
  ListView1.Add("7", "Qua")

End

Public Sub ListView1_Select() 
 
  s1 = ListView1.Key
  If s1 <> s2 Then
    ListView1[s1].RichText = "<font color=\"red\">" & ListView1[s1].Text & "</font>"
  Endif
 
  If s2 <> "" Then
    ListView1[s2].RichText = "<font color=\"black\">" & ListView1[s2].Text & "</font>"
  Endif
  s2 = s1
 
End

Perchè ho paura che sia l'unica via.

 :ciao:
Titolo: Re:ListView
Inserito da: tornu - 02 Novembre 2015, 13:14:05
No Gianluigi, non è quello che mi serve, nel tuo esempio se seleziono un elemento della Lisview
è vero che il testo assume il colore rosso ma lo sfondo della riga  (Background) non cambia, cosa che
a me serve, ma se passo ad un'altro elemento quello precedente rimane rosso, mentre a me serve che
ritorni al colore di default ed il testo della nuova riga selezionata diventa rosso, quindi selezionando
uno per volta gli elementi tutti assumono lo stesso colore, mentre a me seve evidenziare con colori
diversi per testo e sfondo riga solo quello selezionato in quel momento. Ho fatto una ricerca anche
sulla ML ufficiale è ho trovato domande in merito ma non risposte se non quella di cambiare oggetto.
Ho paura che con la Listview non sia possibile ottenere quello che voglio io.
Titolo: Re:ListView
Inserito da: Gianluigi - 02 Novembre 2015, 13:48:47
Per quanto ne so, non è possibile intervenire da codice sul colore dell'evidenziazzione.  :-\
A me il codice postato funziona così: Si apre un elenco di scritte nere su fondo bianco, quando clicco su una scritta questa viene evidenziata dal colore scelto di default nelle impostazioni QT nel mio caso un azzurrino (è per questo motivo che è sconsigliabile intervenire sui colori delle scritte perché potrebbe accadere di dare in foregraund lo stesso colore di default dell'evidenziazione) e la scritta cambia in rosso, quando evidenzio un altra scritta questa diventa rossa mentre la precedente ritorna nera.
Ti allego screenshot
 :ciao:
Titolo: Re:ListView
Inserito da: vuott - 02 Novembre 2015, 17:14:43
Effettivamente sembra che non vi sia la diretta possibilità di colorare lo sfondo della sola riga, sulla quale si è cliccato.

Poiché però l'oggetto ListView è composto anche dall'oggetto GridView, possiamo agire su quest'ultimo (che è figlio della ListView).

In particolare opereremo sull'oggetto figlio, ossia la GridView, in ordine alla colorazione dello sfondo della riga selezionata (cliccata) della ListView. Potremo, però, agire sull'item selezionato della ListView per imporre al testo in esso presente il colore da noi prescelto.

Exemplum:
Codice: [Seleziona]
Public Sub Form_Open()

  ListView1.Add("1", "Pippo")
  ListView1.Add("2", "Pluto")
  ListView1.Add("3", "Paperino")
  ListView1.Add("4", "Gastone")
  ListView1.Add("5", "Qui")
  ListView1.Add("6", "Quo")
  ListView1.Add("7", "Qua")

End


Public Sub ListView1_Select()
 
  Dim j As Byte
  Dim ob As Object
 
' Assegnamo alla variabile di tipo oggetto il "figlio" (che è una "GridView") della "ListView":
    ob = ListView1.Children[0]
 
' Assegnamo i colori di base allo sfondo della "GridView-figlio" e al testo presente nella  "ListView":
     For j = 0 To ob.Rows.Max
      ob[j, 0].Background = Color.Default
      ListView1[j + 1].Richtext = "<FONT Color=#212121>" & listView1[j + 1].text
    Next

' Assegnamo il colore blu allo sfondo della riga cliccata della "GridView-figlio":
    ob[ob.Row, 0].Background = &0000FF

' Assegnamo il colore giallo al testo presente nella riga cliccata della "ListView":
    ListView1[ob.Row + 1].Richtext = "<FONT Color=#FFFF00>" & listView1[ob.Row + 1].text

End
Titolo: Re:ListView
Inserito da: Gianluigi - 02 Novembre 2015, 19:54:11
Mi complimento, il tuo codice mi ha aiutato a capire meglio children, ho inoltre notato che non servono i tag di chiusura per html e che a listview puoi passare una chiave non string e questo mi ha lasciato di stucco.
Hai risolto il problema di tornu e quello di non doversi preoccupare più dell'impostazione di default.  :ok:

Per migliorare la lettura della parola/frase evidenziata si può aggiungere il tag <b> che renderebbe il testo momentaneamente in grassetto.

Si potrebbe volendo aggiungere che in caso di parecchie migliaia di dati il ciclo (cambiando byte con integer) potrebbe rallentare l'applicazione, in quel caso il sistema di confronto adottato da me forse potrebbe convenire.
 :ciao:
Titolo: Re:ListView
Inserito da: vuott - 02 Novembre 2015, 20:48:00
Per migliorare la lettura della parola/frase evidenziata si può aggiungere il tag <b> che renderebbe il testo momentaneamente in grassetto.
Sì, ottima idea.
Titolo: Re:ListView
Inserito da: tornu - 11 Dicembre 2016, 21:29:24
Buonasera a tutti,
avendo l'esigenza di utilizzare una ListView con la possibilità di evidenziare la riga selezionata
con colori personalizzati ho fatto una ricerca sul Forum e ho ritrovato questa vecchia discussione
che avevo aperto tempo fà, ma al quale non avevo dato seguito.  ???
Comunque ho provato il codice suggerito da vuott, ma il  comportamento e  strano senza
che vada in errore, mi spiego:
cliccando su una delle voci, le stesse "spariscono" e rimane solo la riga del colore di sfondo impostato,
e nella Console viene visualizzato un messaggio di cui non capisco il significato
(Listview_evidenziarows:5072): Pango-WARNING **: pango_layout_set_markup_with_accel: Errore alla riga 1 carattere 29: Carattere '#' spaiato, era atteso un simbolo di quoting aperto dopo il segno di uguale per attribuire un valore all'attributo
"foreground" dell'elemento "span"

Mi potete dare un riscontro.
Titolo: Re:ListView
Inserito da: Gianluigi - 11 Dicembre 2016, 21:46:52
In Ubuntu 16.04.01 con la Trunk funziona bene come puoi constatare dall'immagine.
Titolo: Re:ListView
Inserito da: vuott - 11 Dicembre 2016, 23:56:52
(Listview_evidenziarows:5072): Pango-WARNING **: pango_layout_set_markup_with_accel: Errore alla riga 1 carattere 29: Carattere '#' spaiato, era atteso un simbolo di quoting aperto dopo il segno di uguale per attribuire un valore all'attributo
"foreground" dell'elemento "span"

Mi potete dare un riscontro.
.......scommetto che stai usando le librerie GTK/GTK3........ (http://forum.ubuntu-it.org/images/smilies/whistle.gif)
Titolo: Re:ListView
Inserito da: tornu - 12 Dicembre 2016, 10:05:28
In Ubuntu 16.04.01 con la Trunk funziona bene come puoi constatare dall'immagine.
Ciao Gianluigi,
io uso ancora Ubuntu 14.04 LTS con Gambas 3.9.1 stable

.......scommetto che stai usando le librerie GTK/GTK3........ (http://forum.ubuntu-it.org/images/smilies/whistle.gif)
Ciao vuott,
sì, e quali dovrei usare
Titolo: Re:ListView
Inserito da: Gianluigi - 12 Dicembre 2016, 11:44:05
Leggi un po qui (http://www.gambas-it.org/smf/index.php?topic=5230.msg39431#msg39431)

 :ciao:

P.S. di questo se ne è parlato e riparlato...
Titolo: Re:ListView
Inserito da: vuott - 12 Dicembre 2016, 12:30:14
sì, e quali dovrei usare
Tornuuuu, sveglia !
      (http://www.carloneworld.it/images/4_Humor/emoticons/cuckoo.gif)

Oltre i componenti GTK, ci sono pure gb.qt4 e gb.qt5 !
Titolo: Re:ListView
Inserito da: tornu - 12 Dicembre 2016, 13:24:05
Scusate, sarò anche rinco...(l'influenza ci prova...ma resisto)

Leggi un po qui (http://www.gambas-it.org/smf/index.php?topic=5230.msg39431#msg39431)

 :ciao:

P.S. di questo se ne è parlato e riparlato...

si è vero, mi ero imbattuto anche io in questi problemi,ma sono configurazioni da me fatte tanto tempo fà sempre con il
vostro aiuto, di fatto risolvendo e non avendo avuto più problemi del genere

Tornuuuu, sveglia !
      (http://www.carloneworld.it/images/4_Humor/emoticons/cuckoo.gif)

Oltre i componenti GTK, ci sono pure gb.qt4 e gb.qt5 !

continuo a non capire...
Titolo: Re:ListView
Inserito da: Gianluigi - 12 Dicembre 2016, 13:38:15
Fai una prova vai su help>System information e vedi come sei configurato.
Potrebbe essere che qualche aggiornamento ti abbia riconfigurato con le GTK.
Se fosse così ti basta riconfigurare con QT Configuration, prima vedi i tool tip se vanno bene.
Titolo: Re:ListView
Inserito da: vuott - 12 Dicembre 2016, 16:45:59
continuo a non capire...
Nel tuo progetto devi disattivare il Componente gb.gtk ed attivare il Componente gb.qt4 !
Titolo: Re:ListView
Inserito da: Gianluigi - 12 Dicembre 2016, 17:39:59
Nooooooooo!
Tornu  :o
Nooooooooo!

Fammi capire dopo aver letto e riletto cose del tipo :
Io uso Unity e ho cambiato il tema in Cleanlook.
Come potrai leggere in giro per il forum Gambas predilige le librerie grafiche QT, pertanto si finisce tutti per fare progetti QT e per far convivere Unity con QT occorre prima intervenire sui colori dei Tooltip e quindi attraverso QT Configuration cambiare il tema.
So che anche chi usa Mint (deriva anch'esso da Ubuntu) si regola così.

Tu configuri il tuo Ubuntu per farlo lavorare con le QT e poi crei i progetti con le librerie GTK?
Ma quale musa ti può aver mai ispirato?

Certo che capisco vuott quando ci legna intanto che male mai potrà fare alle nostre teste dure?  :hard:
Titolo: Re:ListView
Inserito da: tornu - 12 Dicembre 2016, 21:55:14
Nooooooooo!
Tornu  :o
Nooooooooo!
......
Tu configuri il tuo Ubuntu per farlo lavorare con le QT e poi crei i progetti con le librerie GTK?
Ma quale musa ti può aver mai ispirato?

Certo che capisco vuott quando ci legna intanto che male mai potrà fare alle nostre teste dure?  :hard:

Ma assssolutamente nooooo, rinco sì ma non fino a questo punto.  :o
Mentre la tua ipotesi che qualche aggiornamento o qualche libreria installata da qualche programma abbia modificato
la mia configurazione è più plausibile, visto che riconfigurando con QT Configuration ho risolto "l'enigma'. Grazie  :ciao:
Titolo: Re:ListView
Inserito da: tornu - 12 Dicembre 2016, 21:58:21
Non mi permette di mettere [RISOLTO], presumo perchè il primo post è vecchio.
Gianluigi, ci pensi tu ? (Se puoi). Grazie ancora
Titolo: Re:ListView
Inserito da: vuott - 13 Dicembre 2016, 01:00:03
Scusa, ma quale Componente grafico in fine hai utilizzato ?
Titolo: Re:ListView
Inserito da: tornu - 13 Dicembre 2016, 11:08:41
Scusa, ma quale Componente grafico in fine hai utilizzato ?

gb.qt4
Chiedo scusa, ma quando mi avevi dato questa risposta

.......scommetto che stai usando le librerie GTK/GTK3........ (http://forum.ubuntu-it.org/images/smilies/whistle.gif)

in quel momento avevo capito aglio per cipolla, mentre tu ti riferivi ai componenti attivi del progetto e ti avevo risposto dicendo
una cavolata...mi scuso nuovamente  :-[ :-[

Titolo: Re:ListView
Inserito da: vuott - 13 Dicembre 2016, 12:51:59
Capisco.
Ad ogni modo ho notato che quel problema, da te rilevato, compare anche se quel mio codice viene lanciato usando il Componente gb.gtk o gb.gtk3.
Titolo: Re:ListView
Inserito da: Gianluigi - 13 Dicembre 2016, 13:52:56
Ma assssolutamente nooooo, rinco sì ma non fino a questo punto...
Pfffiuuu!!! meno male è stato tutto un qui pro quo tu rispondevi GTK perché in effetti Ubuntu e derivate usano le GTK (e io avevo inteso così) mentre vuott si riferiva al progetto specifico.
Tutto è bene ciò che finisce bene... ho posto risolto come da tua richiesta.  :D

Buon proseguimento a tutti.

P.S. Mi sono dimenticato di chiederti se, prima di riconfigurare con QT Configuration, avevi controllato il funzionamento delle ToolTip e quale era.

Grazie
Titolo: Re:ListView
Inserito da: tornu - 13 Dicembre 2016, 20:08:59
Pfffiuuu!!! meno male è stato tutto un qui pro quo tu rispondevi GTK perché in effetti Ubuntu e derivate usano le GTK (e io avevo inteso così) mentre vuott si riferiva al progetto specifico.....

Esatto, l'incomprensione e nata proprio da quello che dici tu

P.S. Mi sono dimenticato di chiederti se, prima di riconfigurare con QT Configuration, avevi controllato il funzionamento delle ToolTip e quale era.

Grazie

Si, avevo fatto la prova come da te suggerito, anche se nel progetto in cui provavo la ListView non c'erano, ed effettivamente
non si leggeva il contenuto.  :ciao:
Titolo: Re:ListView
Inserito da: Gianluigi - 13 Dicembre 2016, 20:22:51

Si, avevo fatto la prova come da te suggerito, anche se nel progetto in cui provavo la ListView non c'erano, ed effettivamente
non si leggeva il contenuto.  :ciao:

Allora come ho scritto qui (http://www.gambas-it.org/smf/index.php?topic=5230.msg39431#msg39431) ti ricordo che se volessi configurare le tooltip in modo da vederle bene insieme ai baloon devi successivamente riconfigurare per l'ennesima volta QT Configuration.
Altrimenti ricadi nei guai appena passati.

 :ciao: