Hallo zusammen,
Ich habe eine Checkbox in einer GroupBox und habe folgendes Problem. Setze ich nur GroupBox.Visible := false, dann wird die gesamte GroupBox ausgeblendet, die Properties Checkbox.Visible und Checkbox.Showing bleiben weiterhin auf TRUE. Das verstehe ich nun nicht.
In der Checkbox-Klasse brauche ich eine Benachrichtigung, wenn diese nicht mehr sichtbar ist, d.h. auch wenn der Parent / einer der Parents ausgeblendet wird. Geht das überhaupt irgendwie?
In der Checkbox-Komponente habe ich bereits die Messages CM_VISIBLECHANGED und CM_SHOWINGCHANGED ausprobiert, sie kommen aber nicht, wenn direkt die GroupBox.Visible verändert wird.
Logisch. Du setzt ja auch nicht die Checkboxen auf Visible:=False, sondern nur die Groupbox. Das die darin enthaltene Controls ebenfalls Visible=False werden, dafür musst du schon selber sorgen.
Delphi-Quellcode:
var
i: Integer;
begin
for i:=0 to grpTermindaten.ControlCount-1 do
if grpTermindaten.Controls[i] is TCheckBox then
TCheckBox (grpTermindaten.Controls[i]).Visible:=grpTermindaten.Visible;
end;
Aber welches Sinn hat das? Wenn die Groupbox nicht visible ist, werden die darin enthaltenen Controls auch nicht dargestellt, egal welchen Visible-State sie haben.