PDA

Visualizza la versione completa : [DELPHI] Controllo TTrackBar e gestione evento OnMouseUp


re dei giovani
17-01-2011, 09:47
Ciao a tutti.
Ho un piccolo problema che si può riassumere così:
sto modificando un' applicativo in cui vengono utilizzati componenti ttrackbar.
Purtroppo per come utilizzati, basandosi sull'evento onchange, c'è un calo prestazionale.
Volevo poterlo utilizzare con un evento del tipo onMouseUp, in modo che l'azione venga compiuta solo quando viene rilasciato il pulsante del mouse.
Ho verificato che però nel componente standard TTrackbar non c'è tale evento.
Sto cercando soluzioni che possano consentire di mantenere una soluzione trackbar a livello utente( cioè che l'utente a monitor possa utilizzare ancora questo componente per le sue regolazioni).
Qualcuno ha già avuto questo problema?
Avete suggerimenti?
Grazie :)

123delphi321
17-01-2011, 11:29
ciao

e se usassi OnExit?

alka
17-01-2011, 12:08
Una soluzione potrebbe essere quella di utilizzare l'evento OnExit, come suggerito, in modo da tenere conto del valore modificato quando il controllo perde il focus.

Qualora questa soluzione non sia fattibile, per vari motivi che non stiamo ad approfondire, potresti anche utilizzare un componente TTimer per applicare le modifiche apportate ai valori dopo un breve lasso di tempo.

In breve, quando modifichi un valore su qualsiasi trackbar, invece di aggiornare immediatamente gli oggetti correlati potresti invece delegare questa azione a un timer; il timer dovrebbe essere sempre attivo, e l'azione di modifica di un valore dovrebbe andare ad aggiornare il "momento" (es. un campo o variabile di tipo TDateTime) in cui effettuare l'applicazione della modifica, magari incrementando di un secondo la data/ora corrente, e andando a fare questo incremento ogni volta che viene modificato un valore.

Dal timer, sarebbe sufficiente controllare se il "momento" stabilito è trascorso; in caso affermativo, applichi i valori modificati prelevandoli dalle trackbar e disabiliti un flag che impedisce al timer di rieseguire la stessa operazione subito dopo, a meno che non intervenga nel frattempo un'altra modifica al valore delle trackbar, che aggiornerebbe il "momento" e il flag per riprendere il meccanismo.

Ciao! :ciauz:

re dei giovani
18-01-2011, 11:15
Proverò i vostri consigli
Grazie mille !!!!!
:)

Loading