AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente vertikal verschieben

Ein Thema von Delphi Star · begonnen am 9. Apr 2007 · letzter Beitrag vom 10. Apr 2007
Antwort Antwort
Delphi Star

Registriert seit: 4. Apr 2004
432 Beiträge
 
Delphi 2005 Personal
 
#1

Komponente vertikal verschieben

  Alt 9. Apr 2007, 07:01
Guten Morgen,
wie kann ich eine Komponente mit der Maus nur vertikal und nur in einem bestimmten Bereich verschieben?
Real programmers code in binary
SwapIt: Punkte
  Mit Zitat antworten Zitat
Delphi Star

Registriert seit: 4. Apr 2004
432 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Komponente vertikal verschieben

  Alt 9. Apr 2007, 07:30
Ich habe es selbst geschafft:
Delphi-Quellcode:
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;
[edit=Admin] Mfg, Daniel[/edit]
Real programmers code in binary
SwapIt: Punkte
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Komponente vertikal verschieben

  Alt 9. Apr 2007, 08:36
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;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Delphi Star

Registriert seit: 4. Apr 2004
432 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Komponente vertikal verschieben

  Alt 9. Apr 2007, 10:32
Cool, Danke!
Real programmers code in binary
SwapIt: Punkte
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Komponente vertikal verschieben

  Alt 10. Apr 2007, 18:49
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.
  Mit Zitat antworten Zitat
Delphi Star

Registriert seit: 4. Apr 2004
432 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Komponente vertikal verschieben

  Alt 10. Apr 2007, 18:57
Real programmers code in binary
SwapIt: Punkte
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz