Beim OnEventMode musst Du die Funktion, die per Event aufgerufen wird, wieder verlassen (dort darf keine Dauerschleife drin sein).
Für die Zeit, die von der aufgerufenen Funktion benötigt wird, funktionieren die anderen Events nicht mehr. Im Extremfall kommt dann von Windows die Meldung, dass das Programm nicht mehr reagiert.
Wie "draien" das schon richtig gezeigt hat, müsstest Du das in die "Warteschleife" im Hauptteil verlagern.
Dein Beispiel 1 im ersten Post funktioniert, weil Du die Funktion "start" direkt aufrufst (ohne Event). Beim Klick auf den Button wird dann aber ein Event ausgelöst und in die Funktion gesprungen. Solange wie die Funktion dann ausgeführt wird, ist der EventMode blockiert.