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
Memo wird nicht aktualisiert
-
- Lazarusforum e. V.
- Beiträge: 3178
- 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
Das ist normal. Du kannst mit Application.ProcessMessages; die Formulare neu zeichnen.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?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Memo wird nicht aktualisiert
Das ist im Effekt hier richtig, aber die Beschreibung ist etwas "sportlich".Socke hat geschrieben: Mi 13. Apr 2022, 09:18 Das ist normal. Du kannst mit Application.ProcessMessages; die Formulare neu zeichnen.

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.
- 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
Hi!
Versuch das mit
Winni
Versuch das mit
Code: Alles auswählen
Memo1.invalidate; // oder
Memo1.update; // oder
Memo1.repaint;
- BoraBora
- Beiträge: 50
- 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
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.
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.
Re: Memo wird nicht aktualisiert
"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.
Das ist eher etwas für's selber Zeichnen auf den Canvas.
Die "Gelegenheit" ergibt sich aber erst bei Processmessages oder wenn die Anwendung sonst nichts Besseres zu tun hat.

Das ist eher etwas für's selber Zeichnen auf den Canvas.