Zitat:
Kann mir bitte mal einer erklären, wieso TWatchFocus.Create(nil) mit NIL erfolgen muss (hatte erst Self probiert, funktionierte aber nicht)
Es muss nicht nil sein sondern einfach nur vom Typ TComponent. Und Self steht nunmal nur innerhalb einer Klasse zur verfügung weil es auf die aktuelle Instanz zeigt.
An sich ist das ganze eine ganz nette Idee aber ein paar Kritikpunkte/Verbessungspunkte hab ich.
Was mir an deiner Klasse nicht gefällt ist das sie das Screen.OnActiveControlChange nutzt. Wenn dieses Event bereits in Verwendung ist wird es einfach umgesetzt was nicht sonderlich schön ist. Wenn es unbedingt das Event sein soll wäre es schön wenn du prüfst ob bereits eine Methode zugewiesen ist und diese dann gegebenfalls von deinem Event aus aufrufst. Beim Zerstören dann natürlich auch schauen ob dem Event noch deine Methode zugewiesen ist und nur dann das Event auch wieder zurück setzen.
Wenn die Komponente universell nutzbar sein soll wäre es auch schön wenn du eine History führst die nicht nur das letzte Control kennt sondern einige zuvor auch noch.
Zusetzlich solltest du auch sicherstellen das dieses Control (fLastControl) auch noch existiert und nicht in der Zwischenzeit frei gegeben wurde. Dann würde dein fLastControl ins Nirvana zeigen und es kracht.
Aber wie bereits erwähnt, die Idee an sich ist nicht schlecht.