Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Delphi] DBgrid catturare l'evento

    Volevo chiedere se qualcuno sa dirmi che evento viene scatenato in Delphi se uno scorre la barra di scorrimento.

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    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...

  3. #3
    hai risposto implicitamente alla mia domanda....

    dovrò lavorare sull' OnAfterScroll.


    Grazie e ciao

  4. #4
    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

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da ilguardiano
    come posso fare senza catturare il cambio del dataset?
    Utilizzare un DataSet specifico per ogni DBGrid, inserendolo il componente nel form.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    grazie... ma c'è qualche alternativa?

    lo standard che utilizziamo prevede dataset condivisi da + form..

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da ilguardiano
    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.

    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.