Einen Teilerfolg gibt es zumindestens, in der Form der CM_CONTROLLISTCHANGING Message
Delphi-Quellcode:
procedure TMyPanel.CMControlListChanging(var Message: TCMControlListChanging);
begin
if Message.ControlListItem^.Control.ClassName = 'TShape' then
begin
Message.ControlListItem^.Parent := NIL;
iFrm := GetParentForm(Self);
Message.ControlListItem^.Control.Parent := iFrm;
end;
end;
Damit kann kein TShape mehr hinzugefügt werden, er landet vorerst in der Form (oder hat keinen Parent). Das Problem hier ist, das ich bisher keine Möglichkeit gefunden habe die unerwünschte Componente sauber freizugeben (ein Message.ControlListItem^.Control.Free führt in späterer Folge zu einer
Exception)