Показать сообщение отдельно
  #9  
Старый 02.11.2011, 20:52
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Не думаю, что гемороя больше будет. Вот вполне рабочий вариант:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    procedure ListBox1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    SrcData: TStringList;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char);
begin
 Edit1.Perform(WM_CHAR, LongInt(Key), 0);
end;

procedure TForm1.Edit1Change(Sender: TObject);
Var Index: Integer;
begin
 ListBox1.Clear;
 SrcData.Find(Edit1.Text, Index);
 while Index <= SrcData.Count - 1
 do begin
    if AnsiUpperCase(Copy(SrcData.Strings[Index],1,Length(Edit1.Text))) <> AnsiUpperCase(Edit1.Text)
    then Break;
    ListBox1.Items.Add(SrcData.Strings[Index]);
    Inc(Index);
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 SrcData := TStringList.Create;
 SrcData.CaseSensitive := False;
 SrcData.Text := ListBox1.Items.Text;
 SrcData.Sort;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 SrcData.Free;
end;

end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием