flackern in memo
-
Hallo,
ich verwende den Borland Cpp Builder in Version 4. Ich habe ein memo definiert in welches permanente Ausgaben (ohne zu scrollen) gemacht werden. Leider kommt es durch das permanente Neuschreiben zu Flicker-Erscheinungen. Ich habe die DoubleBuffer Methode versucht, aber sie hat nicht funktioniert. Ich bin sicher, dass das Flickern durch systeminternes Löschen des Textes kommt, weiss aber nicht wie ich es unterbinden kann. Wer kann helfen?
-
Hallo
TMemo ist dafür wohl ungeeignet, ich denke mit TListBox/TListView sind solche Ausgabeströme besser zu verarbeiten.
bis bald
akari
-
hi,
schau mal hier: http://www.bytesandmore.de/rad/cpp/snipp/sc02008.php
-
Hallo nochmals,
also, ich habe das Beispiel mit BeginUpdate/EndUpdate ausprobiert, aber es funktioniert nur, solange man Zeilen hinzufügt. Sobald man mehrfach auf dieselbe Zeile schreibt (z.b. SetText), oder sie umlenkt (z.B mit Add/Move/Delete) fängt das flimmern wieder an. Es nützt auch nichts TMemo gegen TListBox auszutauschen. Der Effekt bleibt derselbe. Ich bin ratlos. Es muss doch eine Methode geben auf immer dieselben Zeilen schnell und flimmerfrei auszugeben, oder?
chili_79
-
Naja, man könnte das DoubleBuffering natürlich entsprechend adaptieren..
-
Ja, jetzt funktionierts. Hatte "DoubleBuffering" zwischendurch wieder ausgeschaltet. Ehrlich gesagt kann ich nicht verstehen, warum extra Aufwand betrieben werden muss, um eine flimmerfreie Darstellung zu bekommen. Das sollte Grundvoraussetzung sein. Das mehr an Rechen-/ und Speicheraufwand wie für Doublebuffering beschrieben, kann man nicht wirklich gelten lassen und hat wohl typischerweise einen anderen Hintergrund - egal.
Auf jeden Fall, "Dank'" an euch alle!

-
Naja, das Probelm ist hald das Timing. Wenn die Bilddarstellung zwischen dem hinzufügen einer weiteren zeile ausgeführt wird (was man nicht im Griff hat) dann führt das zwangsläufig zu einem Flackern. Beim DoubleBufferung ists hald so, dass quasi ein "nicht sichtbares" Memo flackert und dus dann selber im Griff hast, wann das Teil ausgegeben wird.