TDBGRID E EVENTO ONCELLCLICK

di il
6 risposte

TDBGRID E EVENTO ONCELLCLICK

Ho questo semplice evento 

che non dovrebbe fare altro che loggare il click, 

la domanda è: perchè mi logga il click precedente?

clicco sulla riga 10 logga la 1 (situazione iniziale)

clicco sull 5 logga la 10

clicco sulla 15 logga la 5 ecc

sembra che ilrefresh del dataset avvenga dopo l evento di click?, mi pare assurdo e quantomeno stupido… 

p.s. tra l altro stessa cosa su eventou onmouseup… 

procedure TfrmInkDBMan.dbgInksCellClick(Column: TColumn);
begin
 if dbgInks.DataSource.DataSet.RecordCount > 0 then
 begin

   ourLogger.UsrInLog.LogMsg(Format(' click on : inkid %d , color :%s',
       [dbgInks.DataSource.DataSet.FieldByName('ID').AsInteger,
       dbgInks.DataSource.DataSet.FieldByName('DescrDef').AsString]),
       ourLogger.GetParentNames(TWinControl(self)));
 end;
end;	

6 Risposte

  • Re: TDBGRID E EVENTO ONCELLCLICK

    È ufficiale, sto impazzendo.

    Ho fatto un nuovo progetto, inserita una tdbgrid, una connessione, un datasource, una query ed un bottone per abilitare connessione e query

    al dataset del datasource ho assegnato la query

    al datasource della tdbgrid assegnato il datasource e come codice

    procedure TForm23.Button1Click(Sender: TObject);
    begin
    FDConnection1.Connected:=True;
    FDQuery1.Active:=True;
    DBGrid1.DataSource.DataSet.Active:=True;
    DBGrid1.DataSource.DataSet.First;
    end;
    procedure TForm23.DBGrid1CellClick(Column: TColumn);
    begin
     ShowMessage(DBGrid1.DataSource.DataSet.FieldByName('descrdef').AsString);
    end;

    quando clicco sulla griglia mi appare messaggio corretto,

    tra l'altro se clicco e tengo premuto vedo che la riga selezionata cambia e quando rilascio il bottone del mouse appare il messaggio

    copio e incollo gli oggetti nel mio progetto originale e non funziona:

    clicco col mouse sulla grid e appare subito il messaggio (sbagliato, sulla riga precedente), quando rilascio il bottone del mouse la riga della griglia cambia…. e tra l altro il cursore del mouse cambia simbolo, diventa tipo il smbolo del divieto di sosta …… e finche non clicco rimane cosi

    gli oggetti li ho copiati ed incollati… bottone incluso, tutto uguale… com'è? possibile?

  • Re: TDBGRID E EVENTO ONCELLCLICK

    10/07/2024 - ziobacco ha scritto:


    la domanda è: perchè mi logga il click precedente?

    Rigiro la domanda: se leggi i campi del record al momento del click, perché non intercetti l'evento AfterScroll sul DataSet direttamente invece di basarti sul clic della griglia?

  • Re: TDBGRID E EVENTO ONCELLCLICK

    10/07/2024 - Alka ha scritto:


    Rigiro la domanda: se leggi i campi del record al momento del click, perché non intercetti l'evento AfterScroll sul DataSet direttamente invece di basarti sul clic della griglia?

    Ciao Aik,a grazie come sempre, in effetti cosi funziona ma rimane che non riesco a trovare la spiegazione del fatto che non funzioni , e peggio ancora, che da una parte funzioni e dall' altra no  ^_^

  • Re: TDBGRID E EVENTO ONCELLCLICK

    Al click prima esegue il codice poi la griglia sposta il recordselected…

    In alternativa sul dataset intervieni su datachange.

    Sei sicuro che se cliccki sullo stesso record selezionato non succede nulla ma appena cambia il record interviene il codice.

    After scroll non sono sicuro ma dovrebbe intervenire anche se con il mouse muovi la barra di scroll pure se non ti sposti di record.

  • Re: TDBGRID E EVENTO ONCELLCLICK

    11/07/2024 - ziobacco ha scritto:


    Ciao Aik,a grazie come sempre, in effetti cosi funziona ma rimane che non riesco a trovare la spiegazione del fatto che non funzioni , e peggio ancora, che da una parte funzioni e dall' altra no  ^_^

    Essendo che i componenti e controlli che stai utilizzando non cambiano, sicuramente la causa è da ricercare nei tuoi progetti che una qualche differenza ce l'avranno, ma non potendo verificare di persona non saprei dire qual è di preciso. :)

  • Re: TDBGRID E EVENTO ONCELLCLICK

    11/07/2024 - sihsandrea ha scritto:


    After scroll non sono sicuro ma dovrebbe intervenire anche se con il mouse muovi la barra di scroll pure se non ti sposti di record.

    Gli eventi di “scroll” sono dei componenti DataSet e si riferiscono allo spostamento tra i record, quindi non hanno a che fare direttamente con eventi del mouse o altro ma con la “navigazione” all'interno dei dati, e quindi prescindono da clic del mouse, rotelline, tasti, ecc. sebbene queste interazioni sui controlli data aware di fatto spostano il puntamento del record corrente, da cui l'evento di “scroll”.

Devi accedere o registrarti per scrivere nel forum
6 risposte