Also ich habe jetzt eine funktionierende Lösung mit dem bereits diskutierten Timer implementiert.
Dazu auf dem Event OnHeaderDragging den Timer aktiviert und auf OnHeaderMouseUp wieder deaktiviert. Der Timer hat diesen einfachen Code hinterlegt:
Delphi-Quellcode:
procedure Tfrm_Form.tm_VSTScrollTimer(Sender: TObject);
var
VSTPos: TPoint;
begin
inherited;
VSTPos := PanelEx1.ClientToScreen(Point(VST.left, VST.top));
if Mouse.CursorPos.X > (VSTPos.X + VST.Width - 25) then
begin
VST.OffsetX := VST.OffsetX - 50;
end;
if Mouse.CursorPos.X < (VSTPos.X + 25) then
begin
VST.OffsetX := VST.OffsetX + 50;
end;
end;
Klappt wunderbar! Das kann jetzt natürlich noch (wie Mike bereits geschrieben hat) ausgebaut werden, damit schneller und langsamer gescrollt wird, je weiter die Maus an oder über den Rand der VST gezogen wird.
Aber als Lösungsansatz auf jeden schnell und einfach mit wenig Code implementiert.
Danke ConnorMcLeod und Mike Lischke für die Hilfe und nötigen Gedankenanstösse!
Manchmal ist die Lösungs schon so einfach, dass man einfach nicht drauf kommt!