Ovvio che da qualche parte un repeat ci deve stare. Di solito un
programma ad eventi è fatto con una strottura di questo tipo:
init
run
done
dove in init ci sono tutte le inizializzazioni, in run c'è il main loop,
e in done ci sono le "distruzioni".
nel mail loop beh è un po' complesso comunque di solito c'è qualcosa che
genera eventi e poi un qualcosa che li analizza. Nel tuo caso ( visto
che hai solo il mouse ) hai getmousex/y quindi ( invento )
repeat
Event := getMouseEvent( );
if Event = Event.Click then OnMouseClick( Event );
until fine
Notare che l'evento OnMouseClick si verifica solo una volta per "click"
indipendentemente da quanto tieni premuto il tasto: puoi decidere tu se
farlo succedere quando il tasto viene premuto o rilasicato. Di solito (
ad esempio per i bottoni ) si definisce il "click" una sequenza
MouseDown/MouseUp sullo stesso elemento. Il doppio Click è la stessa
cosa in un certo tempo ( mezzo secondo? ).
Per quanto riguarda gli analizzatori di eventi ( in questo caso
getMouseEvent ) non c'è una regola che dica che siano o meno bloccanti.
Ma di norma lo sono. E lasciano il posto agli altri task ( così la CPU
non arriva al 100% ).