当前位置:首页 > Windows程序 > 正文

百度输入提示 Delphi 实现

2021-03-26 Windows程序

我们在百度时,输入部分内容,,即可获得输入项选择列表,从而大大减少录入,用户的体验很好,下面是用delphi 模拟这种效果的设计

定义 

DataLst: TStringList; 

用于存放供选择的数据。


Edt1:TEdit;

用于接收用户录入


lbSerach: TListBox;

用于显示提示列表


procedure FillData(DataLst: TStringList );

begin

......

end;


// 在选择列表中的按键处理

procedure TForm1.lbSerachKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

var

i: Integer;

begin

if Key = 13 then // 回车键

begin

for i := 0 to lbSerach.Items.Count - 1 do // 查找用户选取的数据项

begin

if lbSerach.Selected[i] then

begin

edt1.Text := lbSerach.Items[i];

lbSerach.Visible := False;

edt1.SetFocus;

Exit;

end;

end;

end else


if Key = VK_UP then  // 回到编辑框

begin

if lbSerach.ItemIndex = 0 then

begin

lbSerach.ItemIndex := -1;          // 不起作用

lbSerach.Selected[0] := False;    // 不起作用

edt1.SetFocus;

end;

end;

end;


// 编辑框内容变化处理

procedure TForm1.edt1Change(Sender: TObject);

var

i: Integer;

str: string;

begin

str := TEdit(Sender).Text;

lbSerach.Items.BeginUpdate;

lbSerach.Clear; // 清除以前的内容


for i := 0 to DataLst.Count - 1 do  // 从可用数据中选出 匹配项 最多 15个

begin

if pos(str, DataLst[i]) > 0 then 

begin

lbSerach.Items.add(DataLst[i]);

if lbSerach.Items.Count > 15 then

Break;

end;

end;

lbSerach.Items.EndUpdate;

lbSerach.Visible := lbSerach.Items.Count>0;

end;


// 编辑框按键处理

procedure TForm1.edt1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if lbSerach.Visible then

begin

if Key = VK_DOWN then

lbSerach.SetFocus;

lbSerach.Selected[0] := True;

end;

end;




百度输入提示 Delphi 实现

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68156.html