Autore Topic: [Risolto]Criterio sorted in ComboBox  (Letto 961 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
[Risolto]Criterio sorted in ComboBox
« il: 07 Febbraio 2010, 19:16:58 »
Nuova prova = nuovo problema.  :D
Carico la List di una ComboBox dal contenuto di una tabella di SQLite3. Nella ComboBox ho impostato le propiertà:
Sorted = TRUE
ReadOnly = False
Durante il caricamente riconosco  l'elemento "Costi", caratteristica di un insieme di dati, insieme che per mia comodità voglio caricare in coda a tutta la List della ComboBox e forzo, all'inizio della stringa da caricare il crt "~" (cod.ASCII 127 - Hex 7E). A fine caricamento, l'esplosione della relativa tendina riporta nell'elenco delle stringhe caricate, tutti gli elementi col prefisso  "~" in coda alle stringhe con l'iniziale "C"  ???, come se il crt.  "~" venisse trascurato oppure come se per l'ordinamento nella List della ComboBox Gambas utilizzasse una codifica diversa da ASCII.
Ho cercato nella documentazione, ma alla pagina /gb.qt/combobox/sorted, non ho trovato alcuna spiegazione in merito.
Qualcuno me ne sa parlare?
Ciao.



« Ultima modifica: 09 Febbraio 2010, 23:36:07 da Picavbg »
:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Criterio sorted in ComboBox
« Risposta #1 il: 07 Febbraio 2010, 23:23:36 »
prova a vedere che succede se carichi la lista ricavata dal db in un array , poi l' array lo ordini con array.sort(gb.ascendent) o array.sort(gb.descent) poi copi la lista nella combo con combobox1.list=array e vedi come si comporta

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Criterio sorted in ComboBox
« Risposta #2 il: 07 Febbraio 2010, 23:33:56 »
Fsurfing mi ha preceduto. volevo darti lo stesso consiglio, guarda
string[] e la proprietà sort e vedi se combinando una o più opzioni
riesci a ordinarle come vuoi tu.

Gambas non fa altro che ordinarle alfabeticamente:

xxxxxx@macondo:~$ cat hellopica
~prova
C
hello
~prova1
xxxxxx@macondo:~$ cat hellopica | sort
C
hello
~prova
~prova1
     

Salutamo pica, ma quantu sta chiuvennu 'stu 'mmernu?

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Criterio sorted in ComboBox
« Risposta #3 il: 08 Febbraio 2010, 22:10:15 »
Ho letto solo oggi le risposte perchè ho cercato di fare qualche passettino avanti col mio programma, dove le ComboBox me ne stanno facendo di tutti i colori, ma piano piano sto guadagnando terreno.
Il problema del Combobox.sort, intanto, l'ho risolto premettendo una "z" a tutte le stringhe che desidero vadano a finere in coda alla List.
@fsurfing:
grazie, proverò e ti saprò dire.

@giulio:
Citazione
Salutamo pica, ma quantu sta chiuvennu 'stu 'mmernu?
Ma dunni si?, Ti sentu vicinu, ma nun ti viu. Eppuru, quarchi vota ni putissimu fari na pizziata nzemmula! :D :D

Ritornando alle cose serie:
Ovvio, che rispondendo a fsurfing risponderò anche a te che hai avuto la sua stessa idea. Devo confessare che nonostante che applichi anch'io la mia parte di "fantasia" (per dirla alla fsurfing)  ;D  nella stesura di un programma, non avevo avuto la vostra lampadina accesa. Speriamo bene!
 :D :D
Ciao ciao
« Ultima modifica: 09 Febbraio 2010, 08:59:13 da Picavbg »
:ciao:

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Criterio sorted in ComboBox
« Risposta #4 il: 09 Febbraio 2010, 18:22:21 »
Ho ragionato sul problema riscontrato e sugli adattamenti da applicare e tutto sommato penso che sia meglio non aggiungere caratteri non significativi all'inizio di particolari stringhe da caricare nella ComboBox.List, al solo scopo di ottenere un ordinamento particolare. Ho cambiato quindi la parte di programma aggiungendo l'array che mi avete suggerito; in detto array vado a caricare le stringhe da accodare nella ComboBox.List, mentre carico in quest'ultima tutte le altre stringhe nel loro naturale ordine alfabetico. A fine lettura della tabella di DB eseguo un ComboBox.sorted=False ed accodo il contenuto dell'array catricato prima, dopo averlo ordinato. In pratica ho scritto:
Codice: [Seleziona]
DIM $_TabCosti AS NEW String[]
  i_Conta = NomeRec.Count     'estrae il n° di record presenti nella tabella CausaliFreq
  IF i_Conta <> 0 THEN      'Tabella  "CausaliFreq" -->  POPOLATA
    FOR EACH NomeRec
        IF NomeRec!NumVoce >= i_GrupInPiacon AND NomeRec!NumVoce <= i_GrupFiPiacon THEN
            i_Resto = NomeRec!NumVoce MOD 100
            IF i_Resto <> 0 THEN
                 IF NomeRec!NumVoce >= i_GrCoInPiacon AND NomeRec!NumVoce <= i_GrCoFiPiacon THEN
                     $_TabCosti.Add("Costi_" & $_VoceConto & "__" & NomeRec!NomeVoce)
                 ELSE
                  VoContMoDig.Add($_VoceConto & "__" & NomeRec!NomeVoce)
                 ENDIF
            ELSE
               $_VoceConto = NomeRec!NomeVoce
            ENDIF
        ENDIF
    NEXT
   VoContMoDig.Sorted = FALSE
    i_Totel = $_TabCosti.count
    IF i_Totel <> 0 THEN
     $_TabCosti.Sort
      i_Conta = 0
      FOR EACH $_TabCosti
            VoContMoDig.Add($_TabCosti[i_Conta])
            INC i_Conta
      NEXT
    ENDIF
  ENDIF       
  VoContMoDig.ReadOnly = TRUE
Funziona meravigliasamente! ;D
Grazie. Ciao Ciao
:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Criterio sorted in ComboBox
« Risposta #5 il: 09 Febbraio 2010, 19:25:27 »
Citazione
Funziona meravigliasamente! Ghigno
Grazie. Ciao Ciao
avevi dei dubbi?