Move Methode, OnMove Event gesucht

Rund um die LCL und andere Komponenten
Antworten
Martin V
Beiträge: 142
Registriert: Sa 30. Jan 2010, 19:35
OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
CPU-Target: xxBit

Move Methode, OnMove Event gesucht

Beitrag von Martin V »

Ich möchte Programmcode ausführen, wenn sich das Fenster über den Bildschirm bewegt. In der ebenfalls delphi-orientierten WDSibyl Bibiliothek/Entwicklungsumgebung gibt es eine tControl.Move Methode und ein tControl.OnMove Event, vergleichbar mit Resize und OnResize. Wie geht das mit LCL ? Was genau kann man mit BoundsChanged machen?

Falls jemand wissen will, was ich damit bezwecken will: Letztlich muss ich abfragen, ob das Fenster vollständig sichtbar ist oder aus dem Bildschirm herausragt oder von einem anderen Fenster (teilweise) überdeckt ist, weil ich dann unterschiedliche Redraw Funktionen verwende (Zeitersparnis). Unter WDsibyl läuft es schon zufriedenstellend.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Move Methode, OnMove Event gesucht

Beitrag von m.fuchs »

Genau, mit OnChangeBounds wird immer bei Größen- und Positionsänderungen des Forms aufgerufen. Sollte also genau das richtige für deinen Zweck sein.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Move Methode, OnMove Event gesucht

Beitrag von Winni »

Hi!

Warum probierst Du es nicht einfach aus??

Aber : Du kannst OnChangeBounds auch als OnFormMove benutzen.
Reagiert allerdings auch wenn die Größe der Form geändert wird.

Winni

Martin V
Beiträge: 142
Registriert: Sa 30. Jan 2010, 19:35
OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
CPU-Target: xxBit

Re: Move Methode, OnMove Event gesucht

Beitrag von Martin V »

Leider wird beim Bewegen der Form ChangeBounds nicht aufgerufen, sondern nur bei einer Veränderung der Größe des Fensters, wie bei Resize. Welche Methode wird aufgerufen? Unter klassischer Windows-Fensterprogrammierung wäre es WM_MOVE.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Move Methode, OnMove Event gesucht

Beitrag von Winni »

Hi!

?????
Verschieden bei den verschiedenen Betriebssystemen?

Bei mir wird ChangeBounds jedesmal gerufen, wenn ich die Form bewege.
Getestet.

Lin64, gtk2, fpc 3.01, laz 2.08

Winni

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Move Methode, OnMove Event gesucht

Beitrag von Winni »

Hi!

Das ist wohl eine fehlerhafte Information Deinerseits über ChangeBounds:

Gerade getestet auf win7/64:

Löst brav jedesmal aus, wenn die Form bewegt wird.

Also: ChangeBounds ist das Richtige für die gestellte Frage.

Winni

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Move Methode, OnMove Event gesucht

Beitrag von m.fuchs »

Martin V hat geschrieben:Leider wird beim Bewegen der Form ChangeBounds nicht aufgerufen, sondern nur bei einer Veränderung der Größe des Fensters, wie bei Resize.

Weleche Version von Lazarus verwendest du? Die aus deiner Signatur wird es ja hoffentlich nicht mehr sein.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Martin V
Beiträge: 142
Registriert: Sa 30. Jan 2010, 19:35
OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
CPU-Target: xxBit

Re: Move Methode, OnMove Event gesucht

Beitrag von Martin V »

Ich benutze Lazarus 1.8.2 unter Windows32 (das Problem habe ich hier getestet), dann Linux64 und MacOS.

Es ist tatsächlich wohl ein Bug in dieser älteren Version. Dann muss ich wohl mal wieder alle meine Installationen updaten.

Antworten