Refreshproblem ?



  • Greetings,

    langsam dreh ich hier am Rad ^^.

    Ich erstelle in einer Scrollbox zur Laufzeit mehrere Labels und lösche auch welche von diesen.

    Das erstellen klappt wunderbar und wenn ich die Zahl der labels jedoch herabsetze löscht er die Labels zwar auch, lässt jedoch alle Labels die nicht im ersten "Durchgang" sichtbar.

    Die Objekte sind definitiv entfernt, ansprechen ist unmöglich jedoch bleiben sie in der Scrollbox sichtbar.
    Ich hab schon probiert die ScrollBox mit Refresh oder Repaint neuzeichen zu lassen, hat aber alles nix geholfen.

    Tja ... so stehe ich nun vor meiner Wand, kann mir jemand helfen ?

    Finn



  • Wie sieht denn dein Quellcode aus?



  • // remove not needed labels
      for (; i < this->Labels.Length; i++) {
        delete this->Labels[i][0];
        delete this->Labels[i][1];
      }
    

    und jap, i hat immer den richtigen Wert.

    also das löschen der Objekte ist soweit ok.

    Im Endeffekt werden die Labels in einem DynamicArray gespeichert und bekommen als parent die Scrollbox zugewiesen, klappt an sich wunderbar.

    In der ersten Variante hatte ich einfach alle Labels löschen lassen und dann bis zur gewünschten Zahl wieder Labels erstellt, hat auch perfekt geklappt nur bei einer größeren Anzahl wurds natürlich langsamer.

    Nun wollte ich es so machen, dass er immer nur Labels löscht wenn es nötig ist, also wenn ich die Anzahl reduziere.



  • Dann verwende doch die erste Variante (die ja offensichtlich funktioniert hat) und rufe vorher LockWindowUpdate(FormX->Handle); und danach LockWindowUpdate(NULL); auf, dann sollte die Geschwindigkeit nicht darunter leiden!



  • Hm, kannte ich noch gar nicht, direkt mal testen, danke 🙂


Anmelden zum Antworten