AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListBox - AutoComplete und Sorted

Ein Thema von Christoph · begonnen am 12. Okt 2005 · letzter Beitrag vom 13. Okt 2005
 
Benutzerbild von Christoph
Christoph

Registriert seit: 23. Jan 2004
Ort: Heidelberg
48 Beiträge
 
Delphi 6 Personal
 
#1

ListBox - AutoComplete und Sorted

  Alt 12. Okt 2005, 13:18
Hallo,

habe folgendes Problem:

Ich lese Einträge aus einer SQLite-Datenbank in ein Array ein, und füge sie anschließend in eine ListBox ein.
Das sieht etwa so aus:

Delphi-Quellcode:
[...]
for i := 0 to High(Eintrag) do
  begin
    Eintrag[i].Vorname := database.Results[i][0];
    Eintrag[i].Strasse := database.Results[i][1];
    [...]
    Form1.ListBox1.Items.Add(Eintrag[i].Vorname);
  end;

[...]
Bisher sind das knapp 3000 Einträge.
Das nette an der ListBox finde ich die AutoComplete-Eigenschaft. Wenn ich also 'chris' tippe, springt die ListBox gleich zum Eintrag 'Christoph'.

Etwas erstaunlich ist nur, dass die AutoComplete-Eigenschaft nur dann funktioniert, wenn ich die ListBox-Eigenschaft 'Sorted' auf 'true' setze.
Die Eigenschaft 'AutoComplete' scheint ohne 'Sorted:=true' keine Funktion zu besitzen.

Das wäre mir ja eigentlich egal, aber nun habe ich Schwierigkeiten mit der Sortierreihenfolge der Listbox. Denn diese sortiert anders als meine SQLite-Datenbank (auch wenn ich diese vor Einlesen in das Array mit 'order by Name' sortiere).

Wenn ich nun einen Eintrag in der ListBox anwähle

Form1.RichEdit2.Text:=Eintrag[Form1.ListBox1.ItemIndex].Vorname; dann stimmen ItemIndex und die Nummer des Eintrags im Array nicht überein (aber genau das sollen sie tun).
Dünne ich meine Ergebnismenge aus, soll wieder in das Array geschrieben werden.
Die ListBox (sowie das Array) enthält also immer die Ergebnismenge der aktuellen Datenbankabfrage.

Mir würde es ausreichen, wenn die Eigenschaft 'AutoComplete' das tun würde was sie soll - tut sie aber nicht (ohne Sorted:=true).

Als Umgehung könnte ich alle Daten aus der Datenbankabfrage zunächst in eine StringList lesen, diese nach Name sortieren und danach dann in das array einlesen - aber das kann es doch wohl nicht sein (würden den Einleseprozess sehr verlangsamen, ich habe über 70 Spalten in der Tabelle...). Die StringList müsste ausserdem als csv-Datei angelegt werden, (Name;Vorname;Strasse...); Problem dabei ist, dass auch Hochkommata und Anführungszeichen in den Einträgen verwendet werden. Der Einleseprozess wäre vorsichtig gesagt etwas umständlich.

Was kann ich tun?

Vielen Dank im Voraus,
Christoph

P.S.: Ich habe in diesen Bereich geposted, weil es sich mE. um ein Problem mit den Eigenschaften der Komponente ListBox handelt.
'Bist 900 Jahre alt wirst aussehen Du nicht gut!'
  Mit Zitat antworten Zitat
 


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 12:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz