Thema: Drag'n'Drop

Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#11

Re: Drag'n'Drop

  Alt 20. Okt 2006, 04:00
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
  Mit Zitat antworten Zitat