AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Nur horizontal verschiebbar machen
Thema durchsuchen
Ansicht
Themen-Optionen

Nur horizontal verschiebbar machen

Ein Thema von CalganX · begonnen am 4. Apr 2005 · letzter Beitrag vom 7. Apr 2005
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Nur horizontal verschiebbar machen

  Alt 4. Apr 2005, 15:21
Hi,
mit Hilfe von
Delphi-Quellcode:
  {Label mit Programm verschiebbar machen}
  ReleaseCapture;
  lbFileOpen.Perform(WM_SYSCOMMAND, $F012, 0);
mache ich einen TStaticText mit der Maus verschiebbar.
Gibt es eine Möglichkeit das nur für horizontale Verschiebungen zulässig zu machen?

Ich habe versucht das mit Hilfe von Koordinatenabfragen/-änderungen in OnMouseMove zu machen, aber das Ereignis scheint aufgerufen zu werden.

Chris
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Nur horizontal verschiebbar machen

  Alt 4. Apr 2005, 15:53
Zitat von Chakotay1308:
Hi,
mit Hilfe von
Delphi-Quellcode:
  {Label mit Programm verschiebbar machen}
  ReleaseCapture;
  lbFileOpen.Perform(WM_SYSCOMMAND, $F012, 0);
mache ich einen TStaticText mit der Maus verschiebbar.
Gibt es eine Möglichkeit das nur für horizontale Verschiebungen zulässig zu machen?
Manchmal denkt man nicht an die einfachsten Dinge:
Delphi-Quellcode:
  y := lbFileOpen.Top;
lbFileOpen.Perform(WM_SYSCOMMAND, $F012, 0);
lbFileOpen.Top := y;
Du verwendest ja eine undokumentierte WM_SYSCOMMAND.
Siehe auch die Konstante SC_MOVE aus Windows.pas mit dem Wert $F010.
Ich würde mal mit diesem Wert experimentieren (die niedrigsten 4 Bits ändern); könnte sein,
dass dein gewünschter Effekt auftritt.
Andreas
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Nur horizontal verschiebbar machen

  Alt 4. Apr 2005, 16:14
Hi,
danke.
Der Tipp mit der Variable ist schonmal gut. Zwar kann man jetzt immer noch das Label außerhalb des sichtbaren Bereichs rauf- und runterschieben, aber es wird ja auf den Standardwert zurückgesetzt.

Danke!
Chris
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#4

Re: Nur horizontal verschiebbar machen

  Alt 7. Apr 2005, 17:23
Hallo Chakotay1308,
Diese Variante ist meiner Meinung nach besser, da es unter anderem verständlicher ist, als die 2 Zeilen.
Delphi-Quellcode:
var
  Form1: TForm1;
  { -- Moving -- }
           Moving : Boolean;
  Pressed_Y_Koord : Integer;

implementation

{$R *.dfm}

procedure TForm1.StaticText1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Pressed_Y_Koord:=Y;
  Moving:=true;
end;

procedure TForm1.StaticText1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Moving:=false;
end;

procedure TForm1.StaticText1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if Moving then
  begin
    StaticText1.Top:=StaticText1.Top+(Y-Pressed_Y_Koord);
  end;
end;
  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 05:26 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