Hi,
mit dem Timer ist ja nicht gerade optimal, würde es nicht auch so gehen?
Delphi-Quellcode:
procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Sender is TBitBtn then
TBitBtn(Sender).Tag := Y;
end;
procedure TForm1.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
NewPos: integer;
const
MinTop = 10;
MaxTop = 300;
begin
if Sender is TBitBtn then
if ssLeft in Shift then
begin
NewPos:= TBitBtn(Sender).Top + Y - TBitBtn(Sender).Tag;
if (NewPos > MinTop) and (NewPos < MaxTop) then
TBitBtn(Sender).Top:= TBitBtn(Sender).Top + Y - TBitBtn(Sender).Tag;
end;
end;