Hi Leute,
folgendes Problem:
Ich habe ein TreeView mit Node-Einträgen. Wenn ich ein Node in einen anderen Knoten verschieben möchte kann es sein, das der Zielknoten im nicht sichtbaren Bereich den TreeView liegt. Nun habe ich mir gedacht, dass wenn ich einen eintrag verschieben will und ich an den oberen und unteren Rand des TreeView stoße diesen automatisch scrollen lasse. Der Code lautet wie folgt:
Delphi-Quellcode:
procedure TKonfForm.TreeView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var D:TTreeNode;
Begin
if StopDrag then begin TreeView1.EndDrag(False); Accept:=False; exit; end;
d:=TreeView1.GetNodeAt(x,y);
try
Accept:=(Source is TTreeView) and (d<>Nil) and (d.Level>0) and
(PNodeData(d.Data).Typ = Flotte) and
(PNodeData(TreeView1.Selected.Data).Typ = Fahrzeug);
except
Accept := False;
end;
CanDragAccept:=Accept;
// wenn oben dann hochscrollen
IF (y < 2) then begin
TreeView1.ScrollBy(0, 2);
TreeView1.Realign;
end;
// unten auch scrollen
IF (y > TreeView1.ClientHeight - 2) then begin
TreeView1.ScrollBy(0, -2);
TreeView1.Realign;
end;
end;
Der Punkt ist, das so nichts passiert! Wo steckt mein Problem?
Gruß oki