![]() |
Komponente vertikal verschieben
Guten Morgen,
wie kann ich eine Komponente mit der Maus nur vertikal und nur in einem bestimmten Bereich verschieben? |
Re: Komponente vertikal verschieben
Ich habe es selbst geschafft:
Delphi-Quellcode:
[edit=Admin] Mfg, Daniel[/edit]
var mouseposi: integer;
procedure TForm1.Timer1Timer(Sender: TObject); begin bitbtn1.top:=Mouse.CursorPos.y-top-(height-clientheight)-mouseposi; end; procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin mouseposi:=Mouse.CursorPos.y-(height-clientheight)-top-bitbtn1.Top; timer1.Enabled:=true; end; procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin timer1.Enabled:=false; end; |
Re: Komponente vertikal verschieben
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; |
Re: Komponente vertikal verschieben
Cool, Danke!
|
Re: Komponente vertikal verschieben
Verschiebt man den BitBtn schnell, kann er schonmal an einer Stelle hängen bleiben. Das wird im folgenden abgefangen.
Delphi-Quellcode:
Gruß,
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; Guido. |
Re: Komponente vertikal verschieben
:thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz