Dbgrid com record sia verticali che orizzontali

di il
7 risposte

Dbgrid com record sia verticali che orizzontali

Ciao,
ho necessità di creare una form che visualizza vari dati, in stile excel, alcuni sono su righe, altri su colonne, cero di fare un esempio:


Senzanome.png
Senzanome.png

le celle con C sono intestazione e le celle con la D sono i dati che dovrebbero poi essere memorizzati in un database.

quella griglia va ripetuta n volte, dove n è un numero di record di una tabella.

Pensavo di poter usare un dbgrid ma non so se è possibile farlo, con la dbgrid credo si possano mettere tutte le informazioni su una riga sola, non su piu righe, sbaglio?

cioe' un record ha informazioni: D1,D2,D3,D4,D5,D6, D1.4 fino a D4.6.. con una dbgrid potrei metterli tutti sulla stessa riga, ma non su piu righe come nell esempio, giusto?

cosa consigliate per poter ottenere un risultato simile?

grazie.

7 Risposte

  • Re: Dbgrid com record sia verticali che orizzontali

    ziobacco ha scritto:


    ho necessità di creare una form che visualizza vari dati, in stile excel, alcuni sono su righe, altri su colonne [...]
    cosa consigliate per poter ottenere un risultato simile?
    Ciao, direi che per queste esigenze - a meno di non trovare un componente di terze parti in grado di risolvere in modo mirato e specifico la problematica - la strada più semplice (sebbene richieda di lavorarci un po') è quella di personalizzare un controllo TStringGrid.

    Il controllo TDBGrid è limitato (si fa per dire) dal necessario "data binding" con una origine dati, quindi risulta "rigida" da utilizzare per questa esigenza, a meno di non riuscire a fornire record e campi che corrispondano esattamente alle righe e alle colonne da mostrare.

    Ereditando invece dal controllo base della griglia, o appunto dalla classe menzionata sopra, si può sfruttare una griglia funzionante ma più rudimentale e customizzabile, andando a definire in modo manuale le righe fisse oppure editabili, la loro visualizzazione, il contenuto delle singole celle (organizzate sempre per righe e colonne ma gestibili prendendo i dati da altre fonti strutturate in modo diverso).

    Alcune informazioni di base riguardo queste possibilità fanno già parte della documentazione ufficiale, altre si possono trovare in giro facendo una ricerca con i termini chiave specifici.

    Ciao!
  • Re: Dbgrid com record sia verticali che orizzontali

    A che serve?
    Invece di avere n righe di record avresti n colonne di record...
    I dati sarebbero gli stessi, cambierebbe solo il modo di leggere i dati (insolito tra l'altro).
    Se proprio vuoi cimentarti in questa impresa devi usare una striggrid e crearti delle funzioni che estraggono i record e li trascrivono nelle rispettive celle...
  • Re: Dbgrid com record sia verticali che orizzontali

    sihsandrea ha scritto:


    A che serve?
    Invece di avere n righe di record avresti n colonne di record...
    I dati sarebbero gli stessi, cambierebbe solo il modo di leggere i dati (insolito tra l'altro).
    Se proprio vuoi cimentarti in questa impresa devi usare una striggrid e crearti delle funzioni che estraggono i record e li trascrivono nelle rispettive celle...
    si di fatto è solo una visualizzazione diversa con gli stessi dati, ma questa è la richiesta che ho, non ho molta scelta, di fatto non vogliono avere per un singolo "record" circa 20.25 colonne, ma piuttosto "sparsi" un po in colonne e un po in righe.
    Ti ringrazio.

    Alka ha scritto:



    Ciao, direi che per queste esigenze - a meno di non trovare un componente di terze parti in grado di risolvere in modo mirato e specifico la problematica - la strada più semplice (sebbene richieda di lavorarci un po') è quella di personalizzare un controllo TStringGrid.
    Grazie Marco, sempre davvero molto veloce e gentile
  • Re: Dbgrid com record sia verticali che orizzontali

    Avevo un problema simile ma anche dei subtotali per gruppo di righe. Ho risolto con creazione runtime di tpanel  all'interno di una scrollbox.

    La soluzione funziona ma dato il numero alto di tpanel da creare sta diventando troppo lenta. Probabilmente passerò a varie stringgrid che raggruppano i dati su cui fare i subtotali. Comunque questo era effetto ottenuto.

    Ciao

  • Re: Dbgrid com record sia verticali che orizzontali

    13/12/2022 - Pylot66 ha scritto:


    Avevo un problema simile ma anche dei subtotali per gruppo di righe. Ho risolto con creazione runtime di tpanel  all'interno di una scrollbox.

    […]

    Forse è conveniente ereditare da qualcosa di diverso da un TPanel, che rappresenta un controllo più “pesante” avendo un handle di Windows creato “dietro le quinte” (necessario per poter contenere altri controlli al suo interno), passando invece a qualcosa di più “leggero”, ovvero un controllo grafico vero e proprio (in breve, passando da quello che è un TWinControl a un TGraphicControl).

    Al netto della soluzione proposta comunque, non essendoci comunque del codice su cui ragionare o un dettaglio preciso, difficile essere più approfonditi in merito. :)

  • Re: Dbgrid com record sia verticali che orizzontali

    13/12/2022 - Pylot66 ha scritto:


    Avevo un problema simile ma anche dei subtotali per gruppo di righe. Ho risolto con creazione runtime di tpanel  all'interno di una scrollbox.

    La soluzione funziona ma dato il numero alto di tpanel da creare sta diventando troppo lenta. Probabilmente passerò a varie stringgrid che raggruppano i dati su cui fare i subtotali. Comunque questo era effetto ottenuto.

    Ciao

    alla fine ho fatto esattamente cosi… si è un po lento ma ho dviso poi il tutto in pagine, cosi carico 4 “pezzi” alla volta.

  • Re: Dbgrid com record sia verticali che orizzontali

    Felice di essere stato d'aiuto.

    Io ringrazio invece Alka per il suggerimento; di TgraphiCcontrol.

    Mi ha fatto valutare componenti come i Tcustomcontrol che non ho mai usato ma che potrebbero essere una buona soluzione.

    Ciao

Devi accedere o registrarti per scrivere nel forum
7 risposte