AW: Icon Drag&Drop ClickRect
26. Feb 2014, 16:18
Scheint das ich das Thema nicht wirklich gut formuliert hab.
Nun hab ich es selbst lösen können.
Da meine Komponenten aus welchem Grund auch immer nur den linken drittel des zu dragenden Objektes als Griff erkennen will, hab ich die onMouseDown Methode überschrieben, und prüfe selbst ob der Klick innerhalb des aktuellen Icon steht, wenn ja dann StartDrag.
Das ganze sieht dann so aus:
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure TmyBitmapTreeView.MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
var
CurrentNode: TmyBitmapNode;
begin
if assigned(OnDragDrop) then
begin
CurrentNode := GetBitmapNodeAt(x, y);
if assigned(CurrentNode) then
if CurrentNode.ClickTest(x,y) then
BeginDrag(true);
end;
inherited;
end;
Und ClickTest:
function TmyBitmapNode.ClickTest(const x,y: Integer): boolean;
var
p: TPoint;
begin
p.X := x;
p.Y := y;
Result := PtInRect(GetClientBoundingRect,p);
end;
Also Problem gelöst.
Heinrich Wyssen
|