C++ ListBox auf neue Items überwachen



  • bIce schrieb:

    Über Umwege funktioniert es trotzdem:...

    @bIce: Nicht schlecht! Du "mißbrauchst" sozusagen das DrawItem-Event. Hier währe noch zu klären, ob dieses Ereignis auch eintritt, wenn das Fenster nicht sichtbar (z.B. minimiert) ist.

    @David081: Eine weitere Lösung könnte sein, TListBox abzuleiten und für alle Aktionen, bei denen Items hinzugefügt werden, ein eigenes Ereignis auszulösen.



  • dschensky schrieb:

    Hier währe noch zu klären, ob dieses Ereignis auch eintritt, wenn das Fenster nicht sichtbar (z.B. minimiert) ist.

    Daran habe ich nicht gedacht, aber hab gerade nachgeprüft, das Ereignis wird erst dann aufgerufen, wenn man das Fenster wiederherstellt (aus dem minimierten Modus)



  • dschensky schrieb:

    Nicht schlecht!

    Nicht schlecht!? Bei solchen Verrenkungen wird einem doch schon beim Lesen schlecht. Abgesehen davon, dass es eben nicht funktioniert, da OnDrawItem nur für die Items aufgerufen wird, die sichtbar sind.

    Das Implementieren eigener Events wäre technisch der richtige Ansatz, allerdings genauso unlogisch, um nicht zu sagen sinnlos. Was ist der nächste Schritt, ein OnChange-Event für Integer-Variablen?



  • Jansen schrieb:

    Nicht schlecht!? Bei solchen Verrenkungen wird ...

    Ich fand bloß die Idee irgendwie ... äh ... witzig ... und der Bastler in mir kam kurz ans Tageslicht.

    Jansen schrieb:

    ...allerdings genauso unlogisch, um nicht zu sagen sinnlos.

    Ja, ist schon richtig, wenn es so ein Event überhaupt geben sollte, dann für die zugrunde liegende Datenstruktur und nicht das GUI-Element.



  • Jansen schrieb:

    Bei solchen Verrenkungen wird einem doch schon beim Lesen schlecht.

    Was meinst Du damit?

    Abgesehen davon, dass es eben nicht funktioniert, da OnDrawItem nur für die Items aufgerufen wird, die sichtbar sind.

    Stimmt. Ich hatte einfach eine Idee, hab diese mit 1 Element getestet. Es hat funktioniert. Dann habe ich einfach gepostet.

    Das Implementieren eigener Events wäre technisch der richtige Ansatz, allerdings genauso unlogisch, um nicht zu sagen sinnlos.

    Ich hab nie das Gegenteil behauptet. David081 wollte eine Lösung, ich hab ihm eine gegeben. Ob diese Sinnlos/voll ist interessierte es mich nicht.



  • bIce schrieb:

    Was meinst Du damit?

    Schlimm genug, wenn man Sachen für etwas missbraucht, für das sie ursprünglich nicht gedacht sind (Verrenkung), unter Umständen mag soetwas ein notwendiges Übel sein.
    Das Ganze dann aber auch noch für eine völlig sinnlose Funktionalität, da wird jedem mit ein bischen Sinn für guten Programmierstil einfach schlecht.

    Nimm's nicht persönlich, die Sinnlosigkeit lag ja schon in der Frage begründet, da kann es gar keine sinnvolle Antwort geben.

    David081 wollte eine Lösung, ich hab ihm eine gegeben.

    Eine nicht wirklich funktionierende "Lösung" hat diesen Namen eigentlich nicht verdient, oder? 😉

    PS.
    Möglicherweise liege ich ja aber auch vollkommen daneben und David081 hat eine zwingende Begründung, warum ein OnChange-Event o.ä. für TListBox Sinn machen würde. In dem Fall kann ich es kaum erwarten, sie zu hören.



  • @ Jansen, die ListBox wird durch die Events "OnConnect" und "Socketerror" eines Sockets gefüllt.

    Danke !!!



  • Das war jetzt aber nicht "die Begründung", oder?



  • @ Jansen ,nein ,nur deine Ahnnahme das der Programmierer jederzeit weiß wo wann was gefüllt wird, füllt man etwas anhand von Events weiß man es halt nicht eben immer genau zu welchen Zeitpunkt eine Exeption ausgelöst wird.



  • Keine Ahnung, wie du jetzt auf Exceptions kommst.

    Aber mal angenommen, deine ListBox wird ausschliesslich in besagten Socket-Events befüllt: dann weisst du doch, wann genau das passiert, nämlich in eben diesen Events. Wozu sollte eine zusätzliche Information von Seiten der ListBox gut sein?

    Oder anders gefragt: was hättest du denn im OnChange der ListBox machen wollen?


Anmelden zum Antworten