TDBGrid Ordine Colonne

di il
6 risposte

TDBGrid Ordine Colonne

Salve

Il mio Apllicativo e' collegato ad unSQL Sever

Ho una Tabella con molti campi e a livello funzionale servono tutti

A livello di visualizzazione solo acuni dati sono di interesse in base ad una selezione


Al momento ho collegato la tabella in una TDBGrid e visualizzo tutti i campi

Per variare l'odrine dei campi e la loro visualizzazione e' possibile intervenire direttamente sulla TDBGrid ?

6 Risposte

  • Re: TDBGrid Ordine Colonne

    MircoSoft ha scritto:


    Per variare l'odrine dei campi e la loro visualizzazione e' possibile intervenire direttamente sulla TDBGrid ?
    Certo: basta modificare l'ordine degli elementi nella collection Columns per cambiare la posizione delle colonne nella griglia.
  • Re: TDBGrid Ordine Colonne

    Grazie della risposta

    una volta cambiato l'ordine posso tornare all'originale del designTime o devo memorizzarmi il cambiamento?

    potrei avere un esempio?
  • Re: TDBGrid Ordine Colonne

    MircoSoft ha scritto:


    una volta cambiato l'ordine posso tornare all'originale del designTime o devo memorizzarmi il cambiamento?
    Se l'ordine viene modificato in fase di esecuzione, questo non viene mantenuto in automatico a meno che non venga salvato da qualche parte.

    Per il salvataggio di valori, puoi fare uso dei file INI per salvare e ricaricare le posizioni delle colonne dal file di configurazione, usando la classe TMemIniFile ad esempio.

    Nella documentazione ufficiale trovi tutti gli esempi che vuoi.

    Ciao!
  • Re: TDBGrid Ordine Colonne

    Spiego meglio la mia esigenza

    ho la seguente tabella
    CommonField1
    CommonField2
    CommonField3
    CommonField4
    TypeAField1
    TypeAField1
    TypeAField1
    TypeBField1
    TypeBField2
    TypeBField3
    TypeCField1
    TypeCField2
    TypeCField3


    Selezionando TypeA , TypeB o TypeC da un radiogroup vorrei visualizzare solo le colonne necessarie ed eventualmente cambiarne l'ordine

    Sto provanto con la proprieta'
    .Columns[1].index := 10
    .Columns[2].index := 11


    Il promo giro funziona ma dal secondo dovrei tener conto dello spostamento precedente...


    C'e' una tecnica alternativa per ottenere lo stesso risultato?
  • Re: TDBGrid Ordine Colonne

    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!
  • Re: TDBGrid Ordine Colonne

    Se può esserti di aiuto, io avevo fatto una cosa molto simile e per salvare le informazioni delle varie colonne ho usato il "Nested mode" dei TClientDataSet, ossia un TClientDataSet(Detail) innestato in un altro TClientDataSet(master) il tutto salvato su un unico file.Nel CDS master ho messo le varie descrizioni e nel CDS detail la lista delle colonne nell'ordine che preferivo, una volta selezionata la descrizione si pulisce la griglia e si ripopola con le colonne lette dal CDS Detail.
    N.
Devi accedere o registrarti per scrivere nel forum
6 risposte