Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    [DELPHI] Problema DBGrid

    Salve,

    sto realizzando un programmino Delphi nel quale l'utente deve apportare modifiche a una tabella di un database.

    Tutto funziona alla perfezione, l'unico problema è che quando l'utente scorre la tabella (utilizzando l'apposita barra di scorrimento), il record selezionato cambia.

    Perché? Io vorrei che il record attualmente selezionato rimanesse selezionato, anche quando l'utente utilizza la barra di scorrimento.

    Quel metodo di scorrimento è talmente poco intuitivo Ma come gli è venuto in mente???

    Grazie in anticipo,
    Giacomo

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461
    Non capisco quale possa essere il problema...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da alka
    Non capisco quale possa essere il problema...
    Beh... Il problema è che vorrei poter scorrere la tabella senza venga cambiato il record selezionato.

    Pensaci bene: in quel modo è un po' come se scorrendo un documento Word ti si spostasse il cursore. Fastidioso, non credi?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461
    Originariamente inviato da firefox88
    Beh... Il problema è che vorrei poter scorrere la tabella senza venga cambiato il record selezionato.
    Non hai risposto alla mia domanda.

    Cosa accade nella tua applicazione quando viene selezionato un record?

    Originariamente inviato da firefox88
    Pensaci bene: in quel modo è un po' come se scorrendo un documento Word ti si spostasse il cursore. Fastidioso, non credi?
    Certo, se si trattasse di un documento Word.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da alka
    Non hai risposto alla mia domanda.
    Scusami, non avevo capito.

    Allora, quando un record viene selezionato, l'utente può svolgere una serie di operazioni cliccando su appositi pulsanti (modifica, elimina, esporta, sposta su, sposta giu, ecc...). Ecco perché è importante che il record selezionato non cambi quando vengono utilizzate le barre di scorrimento.

    Se l'utente vuole andare a cercare un record scorrendo la tabella, gli dà sicuramente fastidio che il record da lui precedentemente selezionato cambi.


    Grazie dell'aiuto

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461
    Originariamente inviato da firefox88
    Allora, quando un record viene selezionato, l'utente può svolgere una serie di operazioni cliccando su appositi pulsanti (modifica, elimina, esporta, sposta su, sposta giu, ecc...). Ecco perché è importante che il record selezionato non cambi quando vengono utilizzate le barre di scorrimento.
    Quello che ancora non riesco a capire e quale sia il problema nel fatto che il record cambi tenendo conto che a ciascun record possano essere applicate determinate operazioni; sia che l'utente faccia clic sul record, sia che l'utente scorra nella griglia e cambi il record selezionato, l'applicazione dovrà determinare quali sono le operazioni possibili sul determinato record.

    Ovviamente, tali operazioni non verranno eseguite, quindi non capisco quale sia lo svantaggio di vedere modificato il record.

    Ci sono delle operazioni pesanti che vengono eseguite ogni volta che un determinato record viene selezionato?

    In tal caso, si tratta di una strada comunque sconsigliabile anche nel caso in cui il controllo DBGrid non operi una selezione sullo scrolling.

    Ho fatto una breve ricerca ed ho individuato pochissime pagine sull'argomento, giusto un paio in cui però veniva unicamente proposta questa domanda; ciò mi fa pensare che lo "scrolling" automatico della griglia (che ha delle motivazioni specifiche implementative, dovute al fatto che il controllo può essere usato anche con database lato server e con buffer per cui non è possibile mantenere il cursore su un record precedentemente selezionato che, però, non è più visualizzato sul controllo).

    In sostanza, per ricapitolare, verificherei la sostanza delle operazioni legate al cambio di record e alleggerirei qualsiasi implementazione associata a questo evento, in generale, a beneficio della qualità dell'applicazione.

    Bye!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Ci sono delle operazioni pesanti che vengono eseguite ogni volta che un determinato record viene selezionato?
    No

    Lo "scrolling" automatico della griglia ha delle motivazioni specifiche implementative, dovute al fatto che il controllo può essere usato anche con database lato server e con buffer per cui non è possibile mantenere il cursore su un record precedentemente selezionato che, però, non è più visualizzato sul controllo.
    Hmmm... capisco. Comunque avrebbero dovuto pensarci (magari con un'opzione AutoScrolling da impostare a False )


    Ti ringrazio moltissimo per la velocità, l'accuratezza e l'attenzione con cui rispondi.
    A volte un aiuto è proprio necessario: molte cose importanti, o perlomeno rilevanti, non vengono minimamente menzionate nei manuali.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461
    Originariamente inviato da firefox88
    No
    In tal caso, non mi preoccuperei troppo, no?

    Originariamente inviato da firefox88
    Hmmm... capisco. Comunque avrebbero dovuto pensarci (magari con un'opzione AutoScrolling da impostare a False )
    Credo che il succo del problema stia nel fatto che i controlli visuali disponibili "nella scatola" sono progettati per risolvere le esigenze più comuni, mentre per le esigenze tecniche più avanzate occorre "metterci del proprio" oppure ricorrere a controlli di terze parti.

    Il controllo DBGrid, ad esempio, viene utilizzato con tutte le piattaforme per l'accesso ai dati di cui Delphi dispone, quindi deve essere sufficientemente generico e funzionale per non arrecare problemi a ciascuna di esse, ovviamente senza incorporare nel controllo alcune distinzione specifica, e non è un compito facile a pensarci bene.

    Io credo che Borland abbia fatto un ottimo lavoro.

    Poi va da sé che quando si comincia ad avere necessità di qualche cosa particolare, allora è necessario introdursi nei meccanismi che regolano la VCL e i suoi controlli, scrivere codice o cercare controlli, gratuiti o a pagamento, che soddisfino tale esigenza, benché i controlli standard vadano bene per la maggior parte dei casi.

    Originariamente inviato da firefox88
    Ti ringrazio moltissimo per la velocità, l'accuratezza e l'attenzione con cui rispondi.
    A volte un aiuto è proprio necessario: molte cose importanti, o perlomeno rilevanti, non vengono minimamente menzionate nei manuali.
    Purtroppo, la documentazione è una delle "spine nel fianco" dei Delphisti: principalmente in lingua inglese, un po' frammentata in vari siti più o meno curati...insomma, ci vuole un po' di ricerca e dedizione.

    Nel caso specifico, è plausibile che sia un po' difficile trovare soluzioni "secche" per problemi particolari come quello di cui abbiamo parlato.

    Grazie comunque.

    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.