
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.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
|