mal noch eine Ergänzung...
Delphi-Quellcode:
function isChild(parent:TControl;child:TControl):boolean;
var c:TControl;
begin
c:=Child.Parent;
result:=False;
while assigned(c) and not result do
begin
if c=parent then result:=true;
c:=c.Parent;
end;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
accept := (sender<>source) and
(not isChild(source as TControl,(sender as TControl))) and
(sender is TWinControl);
end;
- wenn sender=source kommt zugriffsverletzung (control kann nicht sein parent sein
)
- man darf das Parent nicht in sein client droppen (isChild-Funktion), sonst
AV
- der sender (= TargetControl) muss ein TWinControl sein, sonst gibt es auch Fehler (z.B. wenn man auf ein TLabel zieht) (vermutl. invalidCast to TWinControl)
Gruß Frank