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