![]() |
ComboBox.ItemIndex liefert falsche Ergebnisse
Guten Morgen,
habe die SuFu schon benutzt, zu meinem speziellem Problem aber noch nichts gefunden. In seltenen, sporadisch auftretenden (also nicht reproduzierbaren) Fällen liefert mir ComboBox.ItemIndex einen Wert kleiner 0, obwohl in der Combobox eindeutig was drin steht. Dass dort auch wirklich der Text 1 zu 1 steht wie in den Items, ist schon vorher geprüft worden (im OnExit). Momentan ist eine Logik eingbaut, die, wenn der IntemIndex < 0 ist, versucht ihn über diese Methode zu ermitteln : ComboBox.Items.IndexOf(ComboBox.Text) Das klappt dann auch in den paar Fällen, wo der erste Fehler aufgetreten ist, allerdings bin ich mir nicht sicher, ob man dem vertrauen kann, wenn ja schon der ItemIndex manchmal den falschen Index liefert. Was ihr noch wissen solltet, die ComboBox wird als Paramter in einer Funktion übergeben, ich überprüfe im Moment noch, ob er dann wirklich die richtige Combobox anspricht, da der Fehler aber so selten auftaucht, muss ich mich erst mal darauf verlassen, dass die Bediener mir bescheid geben. |
AW: ComboBox.ItemIndex liefert falsche Ergebnisse
Und wenn Du AutoComplete der ComboBox auf true stellst?
|
AW: ComboBox.ItemIndex liefert falsche Ergebnisse
Zitat:
Delphi-Quellcode:
oder genauer
< 0
Delphi-Quellcode:
bedeutet "nichts ausgewählt", also kein Items ist selektiert.
-1
Und nur weil etwas drin steht, muß noch lange nichts selektiert sein. Wenn man "Freitext" erlaubt (csDropDown oder csSimple), dann wird eben nicht automatisch selektiert, nur weil "zufällig" irgendein Item (es könnten auch mehrere sein und das weiß Delphi/VCL/Windows nicht) mit dem .Text übereinstimmt. Also entweder du mußt dafür sorgen, dass ein Item ausgewählt wird, wenn du nur auf ItemIndex zugreifst.
Delphi-Quellcode:
bzw. statt DeineComboBox.ItemIndex eben DeineComboBox.Items.IndexOf(DeineComboBox.Text) zum Auslesen verwenden.
DeineComboBox.ItemIntex := DeineComboBox.Items.IndexOf(DeineComboBox.Text);
// oder, damit ausversehn gelöscht werden könnte, falls kein Item gefunden wird i := DeineComboBox.Items.IndexOf(DeineComboBox.Text); if i >= 0 then DeineComboBox.ItemIntex := i; Oder csDropDownList. |
AW: ComboBox.ItemIndex liefert falsche Ergebnisse
Danke himitsu, dann haben meine Kollegen und ich den ItemIndex einer ComboBox erst jetzt richtig verstanden und ich kann mir sicher sein, dass die alternative Methode immer funktioniert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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-2025 by Thomas Breitkreuz