MircoSoft ha scritto:
Selezionando TypeA , TypeB o TypeC da un radiogroup vorrei visualizzare solo le colonne necessarie ed eventualmente cambiarne l'ordine
Per rendere invisibile la colonna, si può impostare la proprietà
Width a 0.
MircoSoft ha scritto:
Il promo giro funziona ma dal secondo dovrei tener conto dello spostamento precedente...
C'e' una tecnica alternativa per ottenere lo stesso risultato?
Sì: prescindere dall'ordinamento attuale delle colonne.
Si dovrebbe predisporre innanzitutto di un array dei nomi delle colonne, o dei campi a cui fanno riferimento, che consentano di identificarle univocamente.
Nel momento in cui si deve impostare l'ordinamento desiderato, l'array di cui sopra deve essere modificato e disposto affinché i nomi contenuti all'interno rispecchi l'ordine che si vuole dare alle colonne; trattandosi di un array di stringhe, nulla vieta di salvarne una "fotografia" con i nomi disposti in base a diversi profili.
Una volta selezionato l'array con i nomi disposti come desiderato, oppure ordinato l'array originale di conseguenza, basta fare un ciclo sulle
Columns del controllo
TDBGrid e, per ciascuna, usare il nome identificativo per individuarne la posizione all'interno dell'array (che andrà da 0 a N) e utilizzare quel valore di posizione come indice da attribuire alla colonna specifica.
In pratica, non si ragiona sulla posizione attuale delle colonne, ma questa viene sempre reimpostata (anche nel caso in cui la posizione da attribuire a una colonna è quella già attuale) mettendo come indice la posizione del suo nome identificativo all'interno di un array che definisce come debbano essere disposte citando i nomi delle colonne stesse nell'ordine in cui vanno messe.
Capisco che la spiegazione è abbastanza teorica, ma non dovrebbe essere così difficile da implementare.
In ogni caso, fai una prova ed eventualmente posta il codice in caso di problemi così possiamo ragionarci.
Ciao!