Abfrage ob die Form gerade auf Bildschirm verschoben wird

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
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

Abfrage ob die Form gerade auf Bildschirm verschoben wird

Beitrag von Martin V »

Ich habe eine Form mit einem Timer und möchte, während der Benutzer die Form auf dem Bildschirm verschiebt und das Programm quasi tot ist, die Timer messages unterdrücken, weil sonst unkontrollierte Effekte entstehen. Bei einem Verschieben der Form wird OnMouseDown/OnMouseUp nicht ausgeführt. Wie kann ich herausbekommen, ob eine Form gerade quasi funktionslos vom Benutzer über den Bildschirm bewegt wird?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Abfrage ob die Form gerade auf Bildschirm verschoben wir

Beitrag von mschnell »

Wieso ist das Programm beim Verschieben tot ? Bei mir läuft bei einem Test auf Windows 10 alles wunderbar weiter, auch die Ausgaben an die GUI, die durch einen Timer gestartet werden, werden korrekt angezeigt. Ich meine mich zu erinnern, dass das bei Linux auch so ist.

-Michael

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: Abfrage ob die Form gerade auf Bildschirm verschoben wir

Beitrag von Martin V »

Danke für den Hinweis. Ja tatsächlich, bei mir läuft das Programm (auf dem Mac) auch weiter. Ich war hier wirklich auf dem Holzweg und konnte das Problem jetzt anderweitig lösen. Ich hatte ein Redraw-Problem. Mein Programm (ein Editor) hat einen selbst gemachten blinkenden Textcursor, der für einen kleinen Bereich ein Repaint anfordert. Das wird aber nicht gleich gemacht, und zwischenzeitlich gibt es einen Repaint für den gesamten Bildschirm, nachdem der User mit dem Verschieben fertig ist. Es sind nun zwei Repaint-Anforderungen gleichzeitig abzuarbeiten, und da gab es einen von mir nicht abgefangenen Konflikt, denn es muß der große Repaint ausgeführt werden und nicht nur die kleine Sektion, denn der Inhalt wurde dann bis auf die Stelle, wo der Cursor ist, gelöscht... Der Mac läßt graphische Ausgaben grundsätzich nur innerhalb der Paint-Message zu, und da können sich dann mehrere Aufforderungen zum Neuzeichnen addieren. Bei allen anderen OS kann man jederzeit neu zeichnen, obwohl das Zeichnen über die OnPaint Message der offizielle Weg ist.

Antworten