FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index All products support Problema con oBrw:bChange
Posts: 858
Joined: Fri Oct 07, 2005 12:00 PM
Problema con oBrw:bChange
Posted: Wed Apr 02, 2008 05:43 PM

Salve a tutti.

Ho creato un browse di un array che quando cambia la riga selezionata, legge alcune informazioni dal disco e me le visualizza su una sezione di dialog a destra del browse.

in pratica faccio un
oBrw:bChange:={| | MyFunction()}

Il problema è che nel caso in cui l'utente tiene premuta la freccia verso il basso o scorra rapidamente la rotellina del mouse e si hanno quindi una serie successiva di chiamate al metodo bChange il sistema va in errore eseguendo alcune operazioni di MyFunction.

Non sono riuscito a ripetere il problema ma sembrerebbe si verifichi in taluni casi quando si opera in rete.

Ho allora ideato questo sistema che esegue MyFunction solo se è passato un secondo dalla chiamata a bChange:

oBrw:bChange:={| | Wait1Second(),MyFunction()}

function Wait1Second()
local nSeconds

nSeconds:=seconds()
do while .t.
sysrefresh()
if seconds()-nSeconds>1
exit
endif
enddo

In modo tale che se l'utente continua la selezione il controllo ripassa al browse prima di eseguire MyFunction.

Il problema che rimane è che alla fine quando il cliente interrompe la selezione e finalmente passa il secondo che ho imposto vengono eseguiti tanti bAction quante solo state le righe di browse selezionato mentre io vorrei venisse eseguito solo l'ultimo bAction.

Spero di essermi spiegato. Avete qualche soluzione a riguardo ?

Grazie in anticipo

Best Regards,



Marco Turco

SOFTWARE XP LLP
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Problema con oBrw:bChange
Posted: Thu Apr 03, 2008 10:07 AM

Secondo me non dovresti utilizzare bChange ma un altro evento. Ad esempio l'evento di quando viene rilasciato il tasto ma non ti so dire come accedervi.

EMG

Posts: 858
Joined: Fri Oct 07, 2005 12:00 PM
Problema con oBrw:bChange
Posted: Thu Apr 03, 2008 01:26 PM

Credo di aver risolto:

..
..
aObjects[6]:bChange:={|| SelectFunc_Cons()}
...
..

Function SelectFunc_Cons()
local nSeconds

aObjects[6]:bChange:={|| nil}

nSeconds:=seconds()
do while .t.
sysrefresh()
if seconds()-nSeconds>.25
exit
endif
enddo

aObjects[6]:Disable()
..
..
..

aObjects[6]:Enable()
aObjects[6]:SetFocus()
aObjects[6]:bChange:={|| SelectFunc_Cons()}
return

Best Regards,



Marco Turco

SOFTWARE XP LLP

Continue the discussion