ComboBox с поиском по возрастанию
Чтобы это реализовать, создайте новый ComboBox, унаследованный от TCustomComboBox и измените его событие Change всего в нескольких строках:
{...}
protected
procedure Change; override;
{...}
procedure TExtComboBox.Change;
var
str: String;
Index: Integer;
begin
inherited Change;
str := Text;
if (FLastKey = VK_DELETE) or (FLastKey = VK_BACK) then
begin
SelStart := Length(str);
SelLength := 0;
Exit;
end;
{ попытаемся найти самый близкий соответствующий элемент }
Index := Perform(CB_FINDSTRING, -1, LPARAM(str));
if Index <> CB_ERR then
begin
ItemIndex := Index;
SelStart := Length(str);
SelLength := Length(Items[Index]) - SelStart;
end
else
Text := str;
{ вызываем стандартное событие }
if Assigned(FOnChange) then
FOnChange(Self);
end;
Вот и все! Почувствуй разницу!
Комментарии