"Insert" bei virtueller ListBox



  • Guten Tag

    Ich habe mich neulich mit virtuellen ListBoxen auseinandergesetzt und das funktioniert beim C++ Builder ja ziemlich einfach, nur dass aus irgendeinem Grund der „Insert“ Befehl für die ListBox nicht mehr geht. "Add" funktioniert soweit wunderbar. Wenn ich den Style von Virtual auf Standard schalte funktioniert aber beides. Kennt jemand das Problem?

    Freundliche Grüsse

    Mathiable

    Edit: zur Vorbeugung von Augenkrebs editiert -.-



  • weil Standard nicht von Standarte kommt und das Forum den geneigten Leser vor Augenkrebs bewahren will.

    mfg
    xXx



  • Bei einer virtuellen ListBox braucht die ListBox doch nur zu wissen wieviele
    Zeilen enthalten sind (count).
    Deine Daten kommen extern, somit brauchst du eigentlich kein Add und erstrecht kein Insert.
    Eigentlich musst du nur den Count aktualisieren und einen RePaint() der ListBox aufrufen.



  • Ich weiss nicht wie man im Normalfall eine Virtuelle ListBox erstellt, aber ich habe nur den Style auf Virtual gestellt und den Count definiert, ansonsten war das Ansteuern und Befüllen das selbe wie bei einer normalen ListBox, also ListBox1->Items->Add(AnsiString) und es hat so auch funktioniert.



  • Wie VergissEs schon sagte:
    Der Trick ist ja, Add gar nicht zu benutzen. Die Listbox weiß nicht, welche Items drin sind, sondern nur wie viele.
    Wenn jetzt ein Bereich der Listbox gezeichnet wird, übergibst du der entsprechenden Funktion nur den Text und das wird von der Listbox passend positioniert.
    Die Datenhaltung ist somit ausgelagert.

    Edit:
    Listbox muss neu gezeichnet werden
    Listbox fragt dich nach Eintrag Nr. 0815
    Du übergibst den Text
    Listbox wiederholt den Vorgang, bis alle neu zu zeichnenden Einträge erfragt sind

    mfg
    xXx



  • Hallo

    Oder ums mal so zu verdeutlichen : Solange du Add oder Insert benutzt, wirst du den eigentlichen Vorteil von virtuellen ListBoxen nicht nutzen (und hast ihn auch nicht richtig verstanden), und kannst gleich bei normalen ListBoxen bleiben.

    bis bald
    akari



  • Die Zeit die er zum Beschreiben der ListBox benötigt hat, ist auf diese weise komplett weggefallen und die hat bei meinen 200'000 Zeilen bis zu 2min gedauert, also aus meiner Sicht funktioniert diese Methode ziemlich gut. Das, oder der PC rechnet 200x schneller wenn ich die ListBox auf Virtuell stelle. Ausserdem wird in der Hilfe als Beispiel ebenfalls bei eine Liste count definiert nachdem sie bei dieser via Add Daten direkt eingefügt haben.

    Kann es nicht sein das die Virtuelle ListBox bei Borland 6 vereinfacht eingebaut wurde? Ansonsten währe mein Programm... ziemlich mystisch... 😮



  • Was hast du im OnData Ereignis deiner ListBox geschrieben
    um auf die virtuellen Daten zu linken ?



  • Ok, mitlerweile habe selbs ich es begriffen.

    Entschuldigt die Zeitverschwendung...


Log in to reply