[C/C++] flackernder Text in ListBox *erledigt*

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von bonsai, 22. Januar 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 22. Januar 2007
    flackernder Text in ListBox *erledigt*

    Hi ... :)

    ich such ne Möglichkeit das Flackern von Texten in einer ListBox zu vemeiden.

    Wie das flackern zustande kommt:

    - Hab eine ListBox mit 1 bis max. 10 Zeilen.
    - Jede Zeile wird jede Sekunde ca. 3x aktuallisiert (von jeweils einem Thread)

    Eigtl. sieht das ganze ganz gut aus, nur das immermal (aller 2 bis 3 sek.) so ein flackern über die gesamte ListBox geht.

    ---

    Gibts ne Möglichkeit das Flackern wegzubekommen? -> hab schonmal bissl gegooglet, aber nix gefunden, was sich mit flackerndem Text beschäftigt ... hab nur Lösung für flackernde Grafiken / Bilder gefunden.

    MfG bonsai


    *edit*

    Hab die Lösung fur das Problem gefunden ... vielen Dank an chkgk für den Denkanstoss mit dem "DoubleBuffering"!

    Lösung:
    Code:
    // Form1::FormCreate(...)
    ListBox1->DoubleBuffered = true;
     

  2. Anzeige
  3. #2 22. Januar 2007
    AW: flackernder Text in ListBox

    Solltest dich mal mit DoubbleBuffering beschäftigen ;) Ich denke das wird dir helfen :)
     
  4. #3 22. Januar 2007
    AW: flackernder Text in ListBox

    Also wie aktualisierte denn die Textbox?!

    Wenn mit nem timer oder so dann schraub doch einfach mal die timerzeit nen bisschen hoch das der langsamer aktualisiert, und sonst könntest es ja auch mit nem timer oder so umgehen, halt nur aktualisieren wenn ne sec umgegangen ist ;)

    Knusperkeks
     
  5. #4 22. Januar 2007
    AW: flackernder Text in ListBox

    Code:
    //----------------------------------------------------------------
    // Visuelle Komponenten mit Lines/TStrings-Eigenschaft (TListBox,
    // TMemo, TRichEdit etc.) werden beim Hinzufügen von Einträgen 
    // nach jedem Add()-Auruf neu gezeichnet/aktualisiert, was 
    // bei mehreren hundrerten Einträgen störendes Flackern verursacht
    // und auch recht viel Zeit kostet.
    // 
    // Mit Hilfe der TStrings-Methoden BeginUpdate() und EndUpdate()
    // kann dieser Schönheitsfehler beseitigt werden: 
    //-----------------------------------------------------------------
    void __fastcall TformMain::FillMemo()
    {
     try
     {
     // Neuzeichnen der Komponente ausschalten:
     reditCode -> Lines -> BeginUpdate();
    
     // 1000 Zeilen hinzufügen:
     for(int ilCount = 0; ilCount < 1000; ilCount++)
     reditCode -> Lines -> Add(TDateTime(Now()+ilCount).
     FormatString("dd. mmmm yyyy"));
     }
     __finally
     {
     // Neuzeichnen der Komponente wieder aktivieren:
     reditCode -> Lines -> EndUpdate();
     }
    }
    
     
  6. #5 22. Januar 2007
    AW: flackernder Text in ListBox

    @ kochpat:

    erstmal THX für den gut erklärten Source ... aber anscheinend funktioniert der nicht so wie ich das brauche.
    Hab den jetzt mal bissl modifiziert und eingebaut, leider ohne sichtbaren Erfolg.

    Das Problem ist wohl, dass der Source für den "Add" Befehl der ListBox gedacht ist... ich nutze allerdings nur
    Code:
    ListBox1->Items->Strings[Nr] = "neuer Text";
    ...


    Fragt sich jetzt nur ob es wirklich daran liegt. ?(
     
  7. #6 23. Januar 2007
    AW: flackernder Text in ListBox *erledigt*

    [X] Erledigt ?! (Steht so im Thread-Titel?)

    Wenn doch nicht schreib ne pn an mich und mach wieder auf!


    Bis dahin

    ~close~
     

  8. Videos zum Thema
Die Seite wird geladen...