Verschiebt man den BitBtn schnell, kann er schonmal an einer Stelle hängen bleiben. Das wird im folgenden abgefangen.
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) then
TBitBtn(Sender).Top := MinTop
else if (NewPos > MaxTop) then
TBitBtn(Sender).Top := MaxTop
else
TBitBtn(Sender).Top := NewPos;
end;
end;
Gruß,
Guido.