Italian community of Lazarus and Free Pascal

Programmazione => Componenti Aggiuntivi => Topic aperto da: giacomarko - Gennaio 17, 2023, 12:06:04 pm

Titolo: Componente DBGridController
Inserito da: giacomarko - Gennaio 17, 2023, 12:06:04 pm
Buongiorno,

Stavo cercando un componende "DBGrid like" un po più evoluto di quello standard, guardando nell'Online Package Manager, ho trovato il componente DBGridController , di fatto funziona come una extention della DBGrid standard, cioè serve sia la DBGrid che questo componente, in cui si dichiara a livello di evento Form.Create di usare la DBGrid...

Ho scaricato anche il demo e le funzionalità sono veramente tante; sorting sia per singola colonna che per multiple, editing, search per colonna e per tabella, totali, count... a footer griglia..

A questo punto ho messo in piedi un piccolo programma (giusto un form con DBGrid e il componente in oggetto, più i soliti Connection, transaction, SQLQuery e DataSource) per prova.

Alla fine la sola cosa che non funziona (o facilmente non sono riuscito a capire come farla funzionare) è il Sort, cioè, quando faccio click sul titolo della colonna compare correttamente una piccola freccia up/down ad indicare che il comando è stato eseguito, ma i dati nella DBGrid non cambiano.

qualcuno di voi lo ha utilizzato ... sa come funziona ??

Thank you !

M
Titolo: Re:Componente DBGridController
Inserito da: nomorelogic - Gennaio 18, 2023, 04:29:49 pm
se non ricordo male devi impostare la proprietà "IndexFieldNames" del dataset
Titolo: Re:Componente DBGridController
Inserito da: giacomarko - Gennaio 18, 2023, 05:34:04 pm
Ok questa sera vedo,

grazie
Titolo: Re:Componente DBGridController
Inserito da: giacomarko - Gennaio 20, 2023, 02:54:58 pm
Niente da fare,
la documentazione è scarsa, non spiega e non fornisce esempi di codice adatto, ho scritto anche su lazarus.freepascal.org... vedremo.

Altri componenti "evoluti" con sort evfilter, in alternativa allo standard DBGrid ?
Titolo: Re:Componente DBGridController
Inserito da: DragoRosso - Gennaio 20, 2023, 03:57:48 pm
Invece di lavorare sulla parte grafica, esegui una query sul DB con un "ORDER BY" ogni qualvolta uno preme sulla colonna .....

Ovviamente aggancia la tua DBGrid alla Query.

Ciao
Titolo: Re:Componente DBGridController
Inserito da: brunello - Gennaio 20, 2023, 05:34:32 pm
https://gitlab.com/lazaruscomponent/dbgridcontroller (https://gitlab.com/lazaruscomponent/dbgridcontroller)

.. Invece di lavorare sulla parte grafica, esegui una query sul DB con un "ORDER BY" ogni qualvolta uno preme sulla colonna .....

esatto lo riporta pure la documentazione, ciao
Titolo: Re:Componente DBGridController
Inserito da: giacomarko - Gennaio 20, 2023, 06:04:06 pm
Grazie Brunello,

quello che mi suggerisci lo so, ed è il modo in cui ho sempre usato il DBGrid, in tutte le sue implementazioni nelle varie form dell'applicazione; intercettando l'evento OnTitleClick e implementando il sort sul DB come metodo..

Come alternativa, cercavo un componente che implementasse questa funzionalità internamente, proprio per evitare quanto sopra

m
Titolo: Re:Componente DBGridController
Inserito da: giacomarko - Gennaio 22, 2023, 01:01:01 am
Ho contattato "fire" (l'autore del componente) sul forum in inglese, spiegandogli il problema, ha aggiornato in mezz'ora il componente  integrando l'uso di SQLQuery e caricandolo su github.

ora funziona perfettamente, ho anche chiesto se può integrare  anche ZQuery  ;D

Va alla grande !

M
Titolo: Re:Componente DBGridController
Inserito da: giacomarko - Gennaio 22, 2023, 03:17:18 pm
Per chibfosse interessato a provarlo, allego il link

https://gitlab.com/lazaruscomponent/dbgridcontroller (https://gitlab.com/lazaruscomponent/dbgridcontroller)]
Titolo: Re:Componente DBGridController
Inserito da: Stilgar - Gennaio 22, 2023, 04:05:02 pm
Codice: [Seleziona]
     If (FGrid.DataSource.DataSet.ClassNameIs('TZQuery') OR FGrid.DataSource.DataSet.ClassNameIs('TZTable')) Then 
Ho come l'impressione che già conosca Zeos.

Così ad intuito. ;D

Stilgar
Titolo: Re:Componente DBGridController
Inserito da: Stilgar - Gennaio 22, 2023, 05:09:15 pm
durante la chiusura del programma mi si pianta qui (con zeos, ma non credo sia un problema legato al dataset sottostante)




Codice: [Seleziona]

// Reset the internal datasource events to nil
   FDatasource.OnDataChange := nil;
   FDatasource.OnUpdateData := nil;
   // Reset the Dataset OnFilterRecord to nil on the dataset linked to the grid
   FGrid.Datasource.Dataset.OnFilterRecord := nil;        <------
Titolo: Re:Componente DBGridController
Inserito da: giacomarko - Gennaio 22, 2023, 11:04:17 pm
Ho appena ricevuto conferma che la versione attuale su github, ora integra la gestione di Zeoslib.

l'ho scaricata e testata e funziona perfettamente.
Relativamente agli errori che rilevate, non so che dire.

Nell'archivio c'è anche una demo, che mostra tutte le possibilità del controllo, tra le altre quella di poter definire un piè di pagina dove raggruppare, sommare, contare ... fare min e max per i campi della tabella

m

Titolo: Re:Componente DBGridController
Inserito da: Avogadro - Gennaio 25, 2023, 03:15:55 am
 :)

E' presente dal 22 u.s. nell' on line package manager

appena ho un minuto  provero ad usarlo
 
finora ho usato la rxdbgrid e frammneti di codice trovati qua e là nell' universo di delphi

altre dbgrid e componeti analoghi semplicemnte poi alla prova dei fatti non funzionavano - o almeno così mi capitava -

vediamo se con questo componente ci si puo' semplificare la vita


Titolo: Re:Componente DBGridController
Inserito da: giacomarko - Gennaio 25, 2023, 10:18:44 am
Il componente permette sort per colonna anche multiplo (premendo shift), filtri a selezione su ogni colonna tipo Excel, selezione delle colonne da visualizzare runtime, editbox integrata nella cella per il campo data, ricerca per colonna o per intera tabella oltre ai classici add, delete, cancel...
Integra anche un footer dove si possono inserire formule di aggregazione dei dati; somma, conteggio, min e max....

posto un esempio