Memo wird nicht aktualisiert

Antworten
Benutzeravatar
BoraBora
Beiträge: 42
Registriert: So 11. Apr 2021, 16:00
OS, Lazarus, FPC: FPC 3..2.2, L 2.2.0 , Linux Mint, WIN 10&11, Android,
CPU-Target: xxBit

Memo wird nicht aktualisiert

Beitrag von BoraBora »

Hallo zusammen,

ich mag es, wenn meine Programme mit mir "sprechen".
Deshalb benutze ich gern ein Memo, dass mir während
des Programmablaufes anzeigt, was das laufende Programm gerade tut.
Ungefähr so:

Memo1.Lines.Add('Starte Aufgabe 1');
// -> Hier wird Aufgabe 1 abgearbeitet
Memo1.Lines.Add('Aufgabe 1 beendet');
Memo1.Lines.Add('Starte Aufgabe 2');
// -> Hier wird Aufgabe 2 abgearbeitet
Memo1.Lines.Add('Aufgabe 2 beendet');

usw.
Unter Windows funktioniert das wunderbar- unter Linux wird der Inhalt
von Memo1 erst dann angezeigt, wenn alle "Aufgaben" abgearbeitet sind
oder ich den Programmablauf mittel showmessage anhalte.

Ist das ein normales Verhalten unter Linux und was für Lösungsansätze
gibt es?

Danke schon mal im voraus.

BB

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Memo wird nicht aktualisiert

Beitrag von Socke »

BoraBora hat geschrieben:
Mi 13. Apr 2022, 09:07
Ist das ein normales Verhalten unter Linux und was für Lösungsansätze
gibt es?
Das ist normal. Du kannst mit Application.ProcessMessages; die Formulare neu zeichnen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Memo wird nicht aktualisiert

Beitrag von theo »

Socke hat geschrieben:
Mi 13. Apr 2022, 09:18
Das ist normal. Du kannst mit Application.ProcessMessages; die Formulare neu zeichnen.
Das ist im Effekt hier richtig, aber die Beschreibung ist etwas "sportlich". :wink:
Application.ProcessMessages löst nicht selbst das Neuzeichnen aus, sondern veranlasst, dass alle wartenden "Aufträge" in der Message Queue abgearbeitet werden und das kann alles Mögliche sein.

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: Memo wird nicht aktualisiert

Beitrag von Winni »

Hi!

Versuch das mit

Code: Alles auswählen

Memo1.invalidate; //  oder
Memo1.update; // oder
Memo1.repaint;
Winni

Benutzeravatar
BoraBora
Beiträge: 42
Registriert: So 11. Apr 2021, 16:00
OS, Lazarus, FPC: FPC 3..2.2, L 2.2.0 , Linux Mint, WIN 10&11, Android,
CPU-Target: xxBit

Re: Memo wird nicht aktualisiert

Beitrag von BoraBora »

Vielen Dank für die Antworten!

Application.ProcessMessages; funktioniert (wenn es denn keine anderen Seiteneffekte gibt)

Weder invalidate, noch repaint, noch update zeigen eine Reaktion.

Unter Win hatte ich das immer so aktualisiert memo1.refresh.
Unter Linux funktioniert das bei mir ebenfalls nicht.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Memo wird nicht aktualisiert

Beitrag von theo »

"Invalidate" (ungültig machen) bewirkt auch nur, dass die Sache "bei Gelegenheit" neu gezeichnet werden soll.
Die "Gelegenheit" ergibt sich aber erst bei Processmessages oder wenn die Anwendung sonst nichts Besseres zu tun hat. :wink:
Das ist eher etwas für's selber Zeichnen auf den Canvas.

Antworten