AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Komponenten während der Laufzeit verschieben
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten während der Laufzeit verschieben

Ein Thema von tofse · begonnen am 10. Jan 2012 · letzter Beitrag vom 12. Jan 2012
Antwort Antwort
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 09:56
Meine Anmerkung bezog sich auf den Original-Code aus dem Link:
Delphi-Quellcode:
procedure TForm1.ControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if FDragging then
    with Sender as TControl do
    begin
      Left := X - FDownX + Left;
      Top := Y - FDownY + Top;
      //in etwa: if (Left=20 and Top>20) then.....
    end;
end;
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#2

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 10:01
Achso...da hat das auch funktioniert, aber wie beschrieben ist die "Performance" da nicht gerade optimal.
Von daher würde ich gerne schon das hier verwenden...
Code:
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
...muss aber halt unbedingt während dem mousemove ein paar Berechnungen vornehmen. Bis jetzt habe ich es nicht hinbekommen.
Habe inzwischen den Code in onmousedown gesteckt, aber während dem Ziehen wird mousemove leider noch immer nicht aufgerufen.

Christof
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 10:39
Ja, weil dieses

Delphi-Quellcode:
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
die Wirkungsweise dieser Proceduren unterbricht.
Ich arbeite auch grad an einem Programm, dass diese Routinen nutzt. Allerdings verschiebe ich TImages. Und ich habe kein Hängenbleiben oder irgendwelche Verzögerungen beim Schieben.
Vielleicht ist dein System einfach nur zu träge für sowas?
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#4

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 11:09
Hm, und da gibt es keine Möglichkeit?
Wie gesagt, mit der 2. Variante habe ich beim Ziehen keinerlei Probleme, von daher hat es wohl nichts mit Trägheit zu tun.

Und "hängenbleiben" ist auch vielleicht das falsche Wort, da ruckelt nichts etc. Es ist nur so, dass das Panel manchmal an der Stelle bleibt, wenn ich den Mauszeiger bei gedrückter Taste sehr schnell bewege. Dann ist der Zeiger plötzlich außerhalb vom Panel und sobald ich den Zeiger wieder über das Panel ziehe, kann ich das Panel weiter bewegen. Das ist einfach nicht schön

Du kannst das bei deinem Programm nicht nachvollziehen?

Christof
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 12:19
@DeddyH: Das ganze würde im MouseDown aber bedeutend mehr Sinn machen oder übersehe ich irgendwas?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#6

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 12:20
@DeddyH: Das ganze würde im MouseDown aber bedeutend mehr Sinn machen oder übersehe ich irgendwas?
Hatte ich schon, aber mousemove wird danach leider nicht mehr aufgerufen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#7

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 12:21
Ich hatte das seinerzeit einmal ins MouseMove verschoben, nur fällt mir gerade der Grund nicht mehr ein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#8

AW: Komponenten während der Laufzeit verschieben

  Alt 11. Jan 2012, 15:52
Hallo,
erst mal Danke für die Anregungen.
Da ich unbedingt das mousemove benötige, um beim Verschieben des Panels die Koordinaten zu berechnen (wegen Scrollen in einer Scrollbox), bin ich wieder zum ursprünglichen Code zurück, auch wenn ich wegen der beschriebenen Probleme nicht glücklich bin.

Ich habe nun versucht, irgendwie zu tricksen, dass der Mauszeiger auch bei schnellen Bewegungen das Panel nicht verlassen kann. Hierzu wollte ich mouseleave einsetzen. Aber in der beschriebenen Situation wird die Prozedur nicht aufgerufen. Wieso ?

Als zweiten Versuch wollte ich im mousemove die übergebenen X,Y Koordinaten mit der Breite bzw. Höhe des Panels abgleichen, d.h. wenn die = sind, darauf reagieren. Das hat auch nicht funktioniert. Daraufhin habe ich mir während dem Ziehen X und Y im Panel ausgeben lassen (bei mousemove), da habe ich dann gesehen, dass diese sich nach dem ersten mousedown nicht mehr verändern.....


Hat jemand noch einen Tipp, wie ich da vorgehen könnte ?

Vielen vielen Dank
Christof
  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 15:35 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-2025 by Thomas Breitkreuz