Einzelnen Beitrag anzeigen

Benutzerbild von Christoph
Christoph

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

Suchfilter für Strings mit Combobox(en) realisieren

  Alt 5. Aug 2004, 21:10
Hallo!

Ich habe folgendes Problem:

In eine Listbox lade ich Strings aus einem csv-file, die verschiedene Informationen beinhalten.

Mit drei Comboboxen möchte ich einen (bzw. mehrere) Filter anlegen, nach denen die Strings in der Listbox abgesucht werden. Ziel ist dann die Wiederbefüllung der Listbox mit den dem Filter entsprechenden Strings.

Der Filterwert in der Combobox 1 ist fix.
Die Werte in der Combobox 2 und 3 sind abhängig von den in Combobox 1 gewählten Werten.

Beispiel a:
Wert Combobox 1: 'Name'
Wert Combobox 2: enthält dann '=' oder 'enthält'
Wert Combobox 3: 'Meier' oder einen frei einzugebenden Wert, zB. 'Mei'

Beispiel b:
Wert Combobox 1: 'Alter'
Wert Combobox 2: enthält dann '=' oder '<' oder '>'
Wert Combobox 3: '0' '1' '2' ... usw.

Beim ButtonOnClick soll dann dieser Filter (zB. 'Name' '=' 'Meier') in einem Memo-Feld sichtbar sein, damit der User weiß, was er für einen Filter gewählt hat.
Das Memo-Feld hat den weiteren Zweck auch weitere Filter anzuzeigen, wenn ich als zweiten Filter zB. noch angeben möchte: 'Alter' '<' '14'.

Ergebnis sollen dann alle die Strings sein, bei denen der Name = 'Meier' ist, und wo das Alter < 14 ist.


Die Abhängigkeit der Comboboxen voneinander funktioniert.
Aber wie bekomme ich es hin, dass der Filter sozusagen 'zwischengespeichert' wird (es wäre auch kein Problem jeden Filter nacheinander anzuwählen, also das Ergebnis sozusagen auszudünnen)?

Schwierigkeiten macht mir auch das Abgreifen der Combobox-Werte, denn je nach gewähltem Wert in Combobox 1 ändert sich ja der Wert in Combobox 2. Dh. der ItemIndex ist je nach Auswahl nicht identisch (zB. mal '<', mal 'enthält').

Es geht leider auch nicht, alles mit einer case oder if-Abfrage abzufangen, denn in Combobox gibt es bereits 20 feste Werte, und alle Eventualitäten zu programmieren wäre sinnfrei.

Versteht jemand das Problem und noch besser, hat jemand einen Vorschlag?

Vielen Dank im Voraus,
Christoph
'Bist 900 Jahre alt wirst aussehen Du nicht gut!'
  Mit Zitat antworten Zitat