Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Suchfunktion <> Listbox ?

  Alt 4. Sep 2005, 19:08
Hi vader,

es gibt viele Möglichkeiten, hier ist eine:

Delphi-Quellcode:
interface

type
  TDemoForm = class(TForm)
    ListBox: TListBox;
    PrefixEdit: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure PrefixEditChange(Sender: TObject);
  end;

implementation

procedure TDemoForm.PrefixEditChange(Sender: TObject);
var
  sl: TStringList;
  index: integer;
begin
  sl := TStringList.Create;
  sl.Sorted := ListBox.Sorted;
  with ListBox do begin
    sl.Assign(Items);
    sl.Find(PrefixEdit.Text, index);
    if (PrefixEdit.Text <> '')
    and (index >= 0)
    and (index < sl.Count)
    and (AnsiUppercase(Copy(sl[index], 1, Length(PrefixEdit.Text))) = AnsiUppercase(PrefixEdit.Text))
      then ItemIndex := index
      else ItemIndex := -1;
  end;
  sl.Free;
end;
Wenn sich der Inhalt von der ListBox nie ändert, dann könntest du die Übernahme der Items in die Stringlist (zum vereinfachten Suchen) bereits im FormCreate() und sl zu einer private Variablen der Form machen.

Statt des Feldes PrefixEdit kannst du auch mit InputQuery() arbeiten.

Kommst du zurecht?

marabu
  Mit Zitat antworten Zitat