Controls inaktiv machen ohne sie zu disablen

combatman

Grünschnabel
Ich habe eine kleine Komponente programmiert, die von TPanel abgeleitet ist und neben einem anderen Aussehen auch eine Checkbox besitzt. Nun möchte ich mit der CheckBox das Panel und alle Unterkomponenten (also z.B. Buttons die darin liegen) deaktivieren. Das ist soweit kein Problem, nur wenn ich jetzt das Panel direkt mit inherited setEnabled(false); deaktivieren würde, könnte ich ja auch meine CheckBox nicht mehr anklicken. Andererseits möchte ich auch nicht die Unterkomponenten einfach immer deaktivieren (ist nur ein Modus von mehreren die ich vorgesehen habe), weil das meist nicht gut aussieht.
Gibt es eine Möglichkeit, Unterkomponenten einer Container-Komponente wie TPanel inaktiv (also nicht anklickbar) zu machen, ohne sie zu disablen? Ich habe schon alles mögliche versucht (den VCL-Source durchsucht, Mouseereignisse abgefangen [die kriege ich ja leider nicht mehr, wenn ich innerhalb des Buttons bin]), ... Hat da jemand einen Tipp?
 

Thomas Kuse

Erfahrenes Mitglied
da du Deine eigene Komponente machst, kannst du dir doch auch eine eigene Methode schreiben z.B. setChildEnabled(boolean)

wenn du dann das mouseClick-Ereignis von deiner Checkbox aufrufst kannst rufst du die Funktion auf und lässt einfach alle Child-Controls per setEnabled(boolean) aktivieren/deaktivieren.