//Need set TabWidth = 20 ListBox1.Items.Add('First'^I'Second'^I'Third') ; ListBox1.Items.Add('C1R1'^I'C2R1'^I'C3R1') ; ListBox1.Items.Add('C1R2'^I'C2R2'^I'C3R2') ; ListBox1.Items.Add('C1R3'^I'C2R3'^I'C3R3') ; ListBox1.Items.Add('C1R4'^I'C2R4'^I'C3R4') ; procedure TForm1.Edit1Change(Sender: TObject); const indexStart = -1; var search : array[0..128] of Char; begin //make sure Length(Edit1.Text) <= 128 StrPCopy(search, Edit1.Text) ; ListBox1.ItemIndex := ListBox1.Perform(LB_SELECTSTRING, indexStart, LongInt(@search)) ; Edit2.Text := IntToStr(ListBox1.ItemIndex); end; Note: LB_SELECTSTRING can *not* be used when Multiselect property for a list box is true.