Autore Topic: Classe CTable  (Letto 9220 volte)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Classe CTable
« il: 21 Febbraio 2011, 23:37:23 »
Un salutone e un abbraccio a tutti.
Mi dispiace che non sono con voi da un bel pò di tempo, e ho anche notato che qualcuno mi ha pure cercato anche in altre bande.
Purtroppo la situazione non mi permette di avere molto tempo da dedicare al diletto ma, ad ogni modo, quel pochino che riesco a racimolare, penso sempre a questa banda di matti...  ;D

Comunque, e sempre sperando di poter ritornare a pieno regime, e come accennato, ho utilizzato qualche oretta la notte per scrivere qualcosina.

In allegato ho messo i sorgenti di una serie di classi e, in particolare, ho voluto riscrivere la classe TableView in modo da espanderne le sue potenzialità, particolarmente in fase di editing.
Preso spunto da qualche studio fatto in Java, ho riscritto la classe TableView, aggiungendo la possibilità di gestire più tipologie di dato, sia in fase di editing, sia in fase di rendering.
La cosa un pochino fastidiosa su cui ho penato un pochino è stata l'utilizzo in Gambas di alcune classi statiche non modificabile, quelle che nella documentazione iniziano con un punto, come appunto esistono nella GridView (che è una classe scritta in C++).
Dato che non volevo mettere le mani sui sorgenti in C++, oltre anche a motivi puramente didattici, ho preso i sorgenti di TableView e l'ho riscritta, utilizzando come base la classe UserControl.
Ad ogni modo, ho riscritto questa classe in modo da poter gestire graficamente più tipologie di dato, diversamente da quanto impostato nella classe originale TableView, aggiungendo vari ComboBox, ButtonBox, CheckBox, CurrencyBox, DateBox, DateTimeBox, IPAddressBox, MaskBox, NumberBox, PercentBox, SpinBox, TextBox e TimeBox. Oggetti che di norma si mettono in una form, e che possono essere sicuramente utili gestiti anche in una griglia di dati.
Molti dei componenti che ho menzionato sono stati da me creati, alcuni riscrivendo oggetti già presenti in Gambas, ecc.
Per poter gestire le classi nascoste, sono dovuto ricorrere a sistemi articolati, creando opportuni oggetti e gestendone gli eventi alla modifica di una qualsiasi loro proprietà. Questo mi ha permesso di gestire in modo dinamico le classi nascoste (es. ".GridViewData").

Sia il rendering (ovvero la presentazione del dato nella griglia), sia l'editing, vengono gestiti da opportune classi manipolate a livello di programmazione. Da queste è anche possibile derivarne di ulteriori aggiungendo ulteriori caratteristiche. La classe madre CTable gestirà le cose per voi, ma senza sapere cosa accade nelle sottoclassi.

Prima di procedere nella creazione della tabella (o griglia), è necessario creare una serie di colonne (a vostra discrezione) utilizzando per ognuna la classe CTableColumn e aggiungerle alla CTable attraverso le funzioni preposte. Per ogni colonna ho inserito anche la possibilità di renderla visibile o meno, questo perchè l'array dei dati potrebbe avere dei campi che devono essere mantenuti nascosti. Altre caratteristiche sono prese dalle proprietà .GridViewColumns e .GridViewColumn.
Ho anche aggiunto la funzione di sorting su singola colonna, che tiene conto del tipo e cerca di ottimizzare la procedura di sort.

Una volta definite le colonne, per visualizzare una rappresentazione dei vostri dati, basta passare a CTable un array di tipo Variant[] (righe), e in ogni elemento un'altro array di Variant[] (colonne).

Comunque, nel file compresso è presente anche una form di esempio. Non è proprio completa, ma dà un'idea delle funzionalità.

Nota per l'esperto di creazione classi di esportazioni (sapete chi...  :D ):
Nonostante abbia gestito le cose per poter creare classi esportabili, ho qualche problema nel caricarle come librerie esterne di altri progetti. Se hai tempo, magari gli dai un'occhiata, e vedi dove sbaglio.

NOTA IMPORTANTE!!!
La libreria è stata creata utilizzando Gambas3 e, nonostante i vari checkout dal repository, non mi ha dato problemi con le librerie, ma sicuramente ha altri problemi che spero risolvano. Devo dire che è migliorato in qualche cosina, specialmente riguardo lo sviluppo di applicazioni, ma di cose da fare ce ne sono... ;)

Ragazzi! Un salutone a tutti.

Citazione
[se volete scrivetemi direttamente alla mia mail, quella la leggo costantemente...]

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #1 il: 22 Febbraio 2011, 20:00:48 »
Nella classe CTable ho aggiunto la possibilità di selezionare ed evidenziare la singola colonna.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #2 il: 23 Febbraio 2011, 21:25:06 »
Corretti alcuni bug, e aggiunte altri oggetti di rendering e editing.

Bye

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Classe CTable
« Risposta #3 il: 23 Febbraio 2011, 21:50:07 »
a me da questo errore all' avvio :(


Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #4 il: 23 Febbraio 2011, 22:07:52 »
Grazie fsurfing, sei sempre gentile nel trovare i miei errori... eheheheh

Scherzi a parte, sicuramente mi è sfuggita una libreria nell'elenco delle dipendenze.
Non ricordo dove MaskBox si trovi, dopo lo correggo, eventualmente puoi aggiungerlo per provare la libreria.

Thanks!!!

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #5 il: 23 Febbraio 2011, 22:11:08 »
Errata corrige!!!

La libreria gb.form è inclusa.
Mi pare strano, ma prova ad inserirla manualmente...

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Classe CTable
« Risposta #6 il: 23 Febbraio 2011, 22:19:21 »
 :-[ 
forse sono io ch eho una versione di g3 troppo vecchia e non cè ancora la maskbox!

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Classe CTable
« Risposta #7 il: 24 Febbraio 2011, 10:31:49 »
Ne approfitto per salutare l'amico md....spero che tu possa trovare un pò di respiro ora... ;)

Complimenti per il lavoro....non appena metto su G3 lo provo perchè sono interessatissimo...

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #8 il: 24 Febbraio 2011, 11:38:59 »
Ciao "brutto ceffo" !  ;D

Lo dico sempre, mò passa, mò passa, ma qui nun passa mai...

Comunque, riguardo a Gambas3, sicuramente il problema, ripensandoci, è dovuto alla versione scaricata. Io la scarico quando capita, ma la scarico... Devo dire che ad ogni scarico, qualche miglioria si vede...  :D

Ora ho in linea sia G3 che G2, la cosa è stata abbastanza semplice, visto che ho già tutte le librerie necessarie, che a suo tempo avevo installato sbattendomi su G2.

Al momento, a parte l'eliminazioni di alcune funzioni (a mio avviso utili), e il blocco improvviso e saltuario dell'ide, G3 porta sicuramente qualcosina di nuovo. Credevo però in qualcosa di più consistente.

Bè, alla prox.!

Un abbraccio a todos

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Classe CTable
« Risposta #9 il: 24 Febbraio 2011, 11:48:43 »
ciao md

ma la classe funziona solo su g3?

io ho un progetto che gira su g2, volendo inserire la classe che modifiche devo fare?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #10 il: 24 Febbraio 2011, 13:55:00 »
E che ne sò? ...  :D

Bè, ho voluto provare la G3, e l'ho fatto creando questa classe.

Adesso non sò se funzionerebbe sulla G2, cosa che puoi provare creandoti un progetto e mettendoci dentro i sorgenti (solo le classi e le form).

Stasera magari ci provo, e poi ti dico...

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #11 il: 24 Febbraio 2011, 19:19:36 »
Altre implementazioni e correzioni.

Bye

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Classe CTable
« Risposta #12 il: 24 Febbraio 2011, 22:28:38 »
do' una guardata, anche se sto usando ancora g2 rispetto a g3, non comprendo la variazione di alcuni controlli. Grazie per la classe! :2birre:

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Classe CTable
« Risposta #13 il: 25 Febbraio 2011, 11:18:42 »
Se qualcuno mi fa la cortesia di fare uno screenshot ad un form in cui funziona CTable, posso inserire l'immagine nell'articolo.

http://www.gambas-it.org/wp/?p=315

Grazie

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Classe CTable
« Risposta #14 il: 25 Febbraio 2011, 13:11:54 »
Per dex:

ho provato su G2 ma, a parte l'assenza di alcuni componenti che ho ricreato, ci sono molte proprietà di base (es. GridViw) che non sono presenti rispetto a G3.

Potrei pure lavorarci sopra, ma la cosa la vedo alquanto laboriosa.

Per cesko:

l'immagine in allegato è quella della form di esempio, inclusa nel tar.
Gli elementi, però, sono abbastanza, e non entrano tutti in un'unica foto.
Vedi se ti và bene...