So, hoffentlich war das Ganze einigermaßen verständlich. Um das komplette Beispiel in Ruhe nachvollziehen zu können, gibt es hier auch den Code als Zip-File (5 KB).