Autore Topic: Gridview con piu righe di header orizzontali  (Letto 1746 volte)

Offline pino

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
Gridview con piu righe di header orizzontali
« il: 19 Gennaio 2013, 01:16:23 »
Sono nuovo del forum e del mondo Gambas e mi sto cimentando nella riscrittura di un mio applicativo in access/vsbasic sotto Gambas con mysql.
Ho bisogno di sapere se è possibile mettere le mani, lo farei io, nell'oggetto gridview per far sì che le righe dell'header verticale (delle colonne) possano essere più di una, con la possibiltà di fare lo span delle colonne.
Pixel mi aveva detto che Milio aveva già avuto un approccio di questo tipo ma l'altro post che (non conoscendo il funzionamento del forum) l'ho inviato come mail in via privata solo a Lui non ha avuto risposta.
A titolo esemplificativo vedere la schermata2 access che vorrei realizzare e quella realizzata con Gambas (schermata3) allegate.
Grazie fin d'ora Pino


Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gridview con piu righe di header orizzontali
« Risposta #1 il: 19 Gennaio 2013, 19:46:37 »
Ciao pino e benvenuto.

Ciò non è possibile ma hai la possibilità di creare degli header "fittizi" usando le normali righe della gridview  ;)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #2 il: 19 Gennaio 2013, 20:25:02 »
mi ricorda un planning per hotel :)

Offline pino

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #3 il: 20 Gennaio 2013, 03:15:35 »
Si ma le righe normali scorrono!!!

Si Fsurfing è il planning di albergo. Tempo fa ci eravamo sentiti e ti avevo chiesto qualcosa riguardo la gridview...

Se c'è il modo anche con trucchi di tenere ferme le righe nello scroll va bene, altrimenti devo mettere le mani nel c o qualunque linguaggio ha usato Nimisini, l'alternativa è un oggetto esteticamente discutibile, ma sicuramente dal punto di vista operativo di difficile lettura.

Grazie per la pazienza
Pino

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.272
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #4 il: 20 Gennaio 2013, 10:30:56 »
Ciao pino, scusa se non ti ho risposto in privato, ma mi sembra piu' utile per gli altri che tu posti in pubblico... :)

Gli Header, come ti ha detto ceskho non si possono 'aggiungere' e anche le righe non si possono bloccare... pero' il codice della griglia e' scritta in gambas....

La trovi nei sorgenti e piu' precisamente dentro il componente gb.form...

Ho provato ha replicare piu' header, ma la cosa va inevitabilmente a coinvolgere piu' classi e diventa troppo complicata... io lavorerei di piu' sulla possibilità di bloccare le righe....

Fammi sapere se parti con l'idea... sono interessato anch'io :)



Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #5 il: 21 Gennaio 2013, 14:41:34 »
La cosa è fattibile, utilizzando un pò di oggetti di Gambas.

Dentro a una VBox, ci si mette in ordine, una bella Label (espandibile) e la nostra GridView. Alla Label, poi, ci si dà il colore dell'header della GridView, e il gioco è fatto. Se dobbiamo costruire più colonne, la cosa diventa un pochino più complessa, in quanto dobbiamo calcolare le dimensioni delle Labels, in base alla e dimensioni delle colonne che vogliamo coprire.
L'aggiunta di nuove colonne all'header virtuale, si fà sempre attraverso una HBox, oppure un Panel trasparente.

Consiglio:
andare a toccare un oggetto collaudato e specializzato come la GridView potrebbe portare a conseguenze sgradevoli, e forse ad un alvoro inutile, se si tratta di mofiche puramente a livello grafico. Se il nostro intento è invece migliorarne le proprietà, o aggiungerne altre, e comunque meglio creare una classe nuova inherendola da GridView (remember: INHERIT)...

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #6 il: 21 Gennaio 2013, 15:16:09 »
Dico una fesseria: mettere in alto una seconda GridView composta da una sola riga che useremo come pseudoheader e che si muove sincronizzata a quella sottostante?
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #7 il: 21 Gennaio 2013, 16:28:44 »
Vi sarebbe anche un'altra possibilità, seppur masochista:

inserire una TextLabel ed usare il codice HTML per creare la griglia/tabella.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #8 il: 21 Gennaio 2013, 16:31:35 »
Credo che questa opzione vada a complicare ulteriormente il discorso...
Da tenere conto che poi si và ad inserire un'oggetto alquanto pesante, per un utilizzo minimo.
L'idea espressa da me nella precedente, aggiungeve elementi più semplici.
E' da tener presente che eventuali spostamenti/ridimensionamenti devono essere gestiti, partendo dalla GridView...

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #9 il: 21 Gennaio 2013, 16:35:28 »
Vi sarebbe anche un'altra possibilità, seppur masochista:

inserire una TextLabel ed usare il codice HTML per creare la griglia/tabella.
Questa non è masochista, in quanto molto simile alla mia ipotesi.
Il problema, come scritto pocanzi, è che poi il ridimensionamento deve essere comunque gestito.

Se si tratta solo di una colonna singola, a copertura del totale delle colonne della GridView, la cosa è piuttosto semplice e veloce, anche utilizzando la tua idea.
Nel caso si vogliano raggruppare le colonne in blocchi (ad es. ogni due, oppure solo i primi 2, o gli ultimi 3), il discorso diventa un pochino più complicato, in quanto le dimensioni di ogni singola Label dovrebbero essere ricalcolate ad ogni spostamento/ridimensionamento delle colonne sottostanti.

Offline pino

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #10 il: 23 Gennaio 2013, 07:26:08 »
Vi ringrazio per i Vostri sforzi; per capire meglio la problematica Vi invito a guardare gli screenshot che ho allegato; in quello realizzato con access (schermata2) si vede l'obbiettivo da raggiungere. La conversione che ho intrapreso richiederebbe un impegno full-time che non ho ma non demordo. Darò, comunque, appena possibile, un'occhiata ai sorgenti per vedere cosa si può fare (modificare o ereditare o ecc.) ora sono preso a fare dei test per verificare se quello che mi serve per la migrazione c'è e come funziona (ho cominciato da poco a studiare Gambas!!).
Visto che mi trovo, chi mi sintetizza la differenza (tolti i casi evidenti datasource, ecc.) in generale tra container(panel) e controlli (es: tabstrip e tabpanel)?

Grazie a priori.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #11 il: 23 Gennaio 2013, 10:32:39 »
Vi ringrazio per i Vostri sforzi; per capire meglio la problematica Vi invito a guardare gli screenshot che ho allegato; in quello realizzato con access (schermata2) si vede l'obbiettivo da raggiungere.


Io, comunque, seguirei il più veloce suggerimento di Ceskho.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pino

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #12 il: 25 Gennaio 2013, 21:25:18 »
Nuovo problemino:

vorrei avere la possibilità di formattare a piacimento la data in datebox. Ho girovagato per i wiki, intenet, ecc. ma non ho trovato un esempio chiaro e completo (dove si mette questo e dove di scrive quest'altro, dove si istanzia, ...) per poter creare una nuova classe ereditata da datebox in cui aggiungere la proprietà ("formatta" per esempio nel nostro caso).

Chi è esperto in questo per qualche dritta!

Ciao

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.272
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #13 il: 09 Marzo 2013, 22:53:34 »
Ciò non è possibile ma hai la possibilità di creare degli header "fittizi" usando le normali righe della gridview  ;)

Gli Header, come ti ha detto ceskho non si possono 'aggiungere' e anche le righe non si possono bloccare... pero' il codice della griglia e' scritta in gambas....
La trovi nei sorgenti e piu' precisamente dentro il componente gb.form...

Ho provato ha replicare piu' header, ma la cosa va inevitabilmente a coinvolgere piu' classi e diventa troppo complicata... io lavorerei di piu' sulla possibilità di bloccare le righe....

Fammi sapere se parti con l'idea... sono interessato anch'io :)

Consiglio:
andare a toccare un oggetto collaudato e specializzato come la GridView potrebbe portare a conseguenze sgradevoli, e forse ad un alvoro inutile, se si tratta di mofiche puramente a livello grafico. Se il nostro intento è invece migliorarne le proprietà, o aggiungerne altre, e comunque meglio creare una classe nuova inherendola da GridView (remember: INHERIT)...

Punto primo: sono testardo :)
Punto secondo: il codice della GridView (chiamata nel progetto GridBox) e' per il 99% scritto dal buon Minisini, io ho solo 'aggiunto' quello che serve...

Prova e fammi sapere 'se te garba' l'idea :)

Ps. Ho utilizzato Gambas 3.4.0
« Ultima modifica: 09 Marzo 2013, 23:00:40 da milio »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Gridview con piu righe di header orizzontali
« Risposta #14 il: 26 Aprile 2014, 03:49:57 »
..... possibiltà di fare lo span delle colonne.

Devi utilizzare la proprietà:
 
Codice: gambas [Seleziona]
GridView[riga, colonna].ColumnSpan = 
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »