Volevo chiedere se qualcuno sa dirmi che evento viene scatenato in Delphi se uno scorre la barra di scorrimento.
Grazie
Volevo chiedere se qualcuno sa dirmi che evento viene scatenato in Delphi se uno scorre la barra di scorrimento.
Grazie
A quanto mi risulta, non c'è alcun evento fornito dal controllo DBGrid che possa indicare lo scorrimento attraverso le apposite barre.
Tuttavia, generalmente lo spostamento delle barre provoca lo "scrolling" del DataSet collegato (tabella o query) che supporta invece gli eventi OnBeforeScroll e OnAfterScroll.
A cosa ti servirebbe?
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
hai risposto implicitamente alla mia domanda....
dovrò lavorare sull' OnAfterScroll.
Grazie e ciao![]()
Ammetto che la risposta fornitami è giusta, ma volevo chiedere se non c'è qualche altro stratagemma per catturare questa transazione.
Mi spiego meglio:
Ho una dbgrid legata ad un dataset.
La dbgrid è in una form, mentre il dataset è dentro un dm usato anche da altre form....
Ora il mio problema è che se mi posiziono su un elemento o su un'altro della griglia devo fare determinate operazioni.
Quindi ho associato agli eventi onCellClick onKeyUp e OnMouseUp le operazioni da fare..... ma se uso le frecce dello scrollbar.... mi frega.....
come posso fare senza catturare il cambio del dataset?![]()
![]()
Grazie![]()
Utilizzare un DataSet specifico per ogni DBGrid, inserendolo il componente nel form.Originariamente inviato da ilguardiano
come posso fare senza catturare il cambio del dataset?![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
grazie... ma c'è qualche alternativa?
lo standard che utilizziamo prevede dataset condivisi da + form..
Più che uno standard, ogni elemento andrebbe utilizzato per il proprio scopo.Originariamente inviato da ilguardiano
grazie... ma c'è qualche alternativa?
lo standard che utilizziamo prevede dataset condivisi da + form..
Mi spiego: non è logico fare i salti mortali per ottenere una determinata funzionalità poichè la struttura fornita al programma non rispecchia il modo più congeniale di fare le cose.
I DataModule sono utili quando più DataSet (ma anche altri componenti) *devono* essere condivisi; il "devono" indica che, a fronte della necessità di "condivisione", tali componenti vengono messi in un DataModule centralizzato.
In tutti gli altri casi (come quello che hai presentato), condividere un DataSet può portare solo ad effetti collaterali e, preso coscienza di questo, si dovrebbe evitare una simile organizzazione dell'applicativo, poichè la necessità di condividere i componenti non sussiste.
Ad ogni modo, l'unica soluzione che posso suggerirti è quella di utilizzare comunque gli eventi OnXXXScroll del DataSet e, da tali eventi, fare riferimento ai form eventualmente istanziati che dipendono da tale comportamento; in sostanza, si controlla se ciascun form dipendente è visualizzato e, in tal caso, si opera sui componenti e sui controlli dello stesso modificando il loro stato opportunamente.
Però, come puoi notare, quello che arrivi ad ottenere per una forzatura immotivata dei componenti nel DataModule centrale è una struttura che ribalta lo scopo per cui essi sono stati creati: avere componenti condivisi tra più form. Nel caso in esame, è il DataModule a condividere i form e non viceversa, poichè il codice che dovrebbe risiedere nel form risiede in realtà nel DataModule.
Non mi viene in mente altro.![]()
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...