1. Home
  2. Computing & Technology
  3. Delphi Programming

Incremental Search for the TListBox Delphi Control

By Zarko Gajic, About.com

Incremental Search for TListBox

Incremental Search for TListBox

The TListBox Delphi control displays a collection of items in a scrollable list.

Items can be selected by clicking on an item, the ItemIndex property gets or sets the index of the selected item.

Incremental Searching for a ListBox

Imagine a list box with a huge number of (unsorted) items. Finding the one user wants to select might turn into a nightmare.

Let's provide the user with an option to immediately locate the item in the list box by adding incremental search functionality.

Drop a TEdit and a TListBox on a form. Leave the default names: "Edit1" and "ListBox1".

Handle the Edit1's OnChange event as:

procedure TListBoxSearchForm.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)) ;
end;
The StrPCopy RTL function copies Edit1.Test string value into a null-terminated string variable "search".

The Perform method sends the specific LB_SELECTSTRING message directly to ListBox1.

LB_SELECTSTRING expects two parameters: the zero-based index of the item before the first item to be searched - "indexStart" constant in the above code; and a pointer to the null-terminated string that contains the prefix for which to search - "search" variable in the above code.

The LB_SELECTSTRING searches a list box for an item that begins with the characters in a specified string. If a matching item is found, the item is selected. If the search is unsuccessful, the current selection is not changed.

Note: LB_SELECTSTRING can *not* be used when Multiselect property for a list box is true.

Explore Delphi Programming

More from About.com

  1. Home
  2. Computing & Technology
  3. Delphi Programming
  4. Using VCL Components
  5. TListBox
  6. Incremental Search for the TListBox Delphi Control

©2008 About.com, a part of The New York Times Company.

All rights reserved.