ich habe eine scrollbox und in dieser ein image.
um nun das image in der scrollbox bewegen zu können(bzw. einfach in der scrollbox scrollen zu können, wenn das image größer als die scrollbox ist), mache ich folgendes:
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (ssleft in shift) and
(scrollbox1.HorzScrollBar.Position+X-oldmouse.X >= 0) and
(scrollbox1.VertScrollBar.Position+Y-oldmouse.Y >= 0) then
scrollbox1.ScrollBy((X-oldmouse.X),(Y-oldmouse.Y));
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssleft in shift then
begin
oldmouse.X:=X;
oldmouse.Y:=Y;
end;
end;
oldmouse ist eine (OOP_Fanatiker bitte das nächste Wort überlesen
) globale variable.
das ganze funktioniert auch, bis auf ein problem:
verschiebe ich das image nach links oben, so verschwindet es dort und die scroll-leisten verschwinden -> das image wird verschoben?!
verschiebe ich das image nach rechts unten, so scroltl die box brav mit - aber die scrollbalken werden immer kleiner, so als ob der inhalt mehr geworden wäre -> wieder der eindruck, das image würde verschoben, und nicht die scrollbox gescrollt !!
was soll das?
das image ist übrigens ein TImage32 aus der G32-Lib.
ausserdem ist es ein direktes child der scrollbox.
irgendwelche manipulationen an der position des image gibt es nicht, an keiner einzigen stelle im code.