AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi ListView: Wie erkennt man, dass Elemente fertig eingetragen?

ListView: Wie erkennt man, dass Elemente fertig eingetragen?

Ein Thema von stephan007 · begonnen am 3. Mai 2007 · letzter Beitrag vom 4. Mai 2007
 
stephan007

Registriert seit: 2. Mär 2007
48 Beiträge
 
#1

ListView: Wie erkennt man, dass Elemente fertig eingetragen?

  Alt 3. Mai 2007, 00:31
Hallo!

Wir haben folgendes Problem:

Wir tragen in die ListView Ergebnisse aus einem Ethernet Scan ein. Wissen daher nicht wirklich, wann die Antworten kommen. Haben daher das ganze mit einem Timer gelöst, der die folgende Aktion nach 500 ms nach dem letzten Eintrag ausführen soll (Timestamp bei Schreibebeginn und timesince).

Wenn die Einträge in der Liste drinnen sind und nach 500 ms nichts neues mehr kommt (also der Timer nicht mehr auslöst), dann wollen wir die Spalten (Columns) auf die optimale Breite setzen (sprich den Text in den jeweiligen Columns hinsichtlich ihrer Länge analysieren und daraus die rrichtige Spaötembreite ermitteln.). Das funktioniert, detto, dass wir Spalten ohne Einträge auf 0 setzen (also ausblenden).

Nun haben wir aber das Problem, dass wir einen Indexüberlauf bekommen. Beim Debugen sehen wir, dass die zu behandelnde Spalte einen Index um 1 größer hat, als gerade verfügbar ist. Insgesamt haben wir 15 Spalten, die erste ist die Caption und dann (über die Subitems) von 0 bis 14. Nun kanns mir aber passieren, dass ich bei Subitem(12) eine Exception wegen Indexüberlauf bekomme. Soll heißen, dass wir davon überzeugt sind, dass das Schreiben scheinbar doch noch nicht fertig war.

Daran knüpft nun meine Frage an:
Gibt es in Delphi eine Möglichkeit festzustellen, ob noch auf eine ListView geschrieben wird respektive ob das Schreiben schon fertig ist (sowas wie ein Event "Drawfinished" - in die ListView schreiben ist ja eigentlich auch nichts anderes als ein Draw Event (wird einem erst beim Umfärben einzelner Einträge bewußt). Ich muss also scheinbar erst schauen, ob auch wirklich fertig eingetragen wurde. Denn sonst ändert sich der Index während der Bearbeitung und Delphi meckert daw an.

Ich suche also ein Event oder eine Funktion, an Hand der ich erkenne, dass die ListView fertig geschrieben ist und ich mit meinem Sizer drüber kann, ohne einen Indexüberlauf auf Grund noch fehlender Spalten zu riskieren. Wenn jemand von Euch hierzu hilfreiche Tipps hätte, wäre mir sehr geholfen.

Danke schon im Voraus!
Lg,
Stephan.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz