如何使edit输入时象IE的地址自动填入那样智能化(50分)

  • 主题发起人 主题发起人 iambest
  • 开始时间 开始时间
I

iambest

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我有以下几个选项:ASDF,ASDFLKJ,BSLK
我在edit中输入A时,会找到最近的一个是ASDF,
然后在A后面添上SDF,并且SDF是给选定的,就是
变蓝那种。
 
可以建立数据库保存你所使用过路径或文件。然后在输入时执行
就近查询得到库中就近的值。
 
先试一下,不行再说。
procedure TForm1.Edit3Change(Sender: TObject);
var
i, j: Integer;
begin
with ListBox1.Items do
begin
for i := 0 to Count-1 do
if Pos(Edit3.Text,Strings)=1 then break;
if i<Count then
begin
j := Length(Edit3.Text);
Edit3.Text := ListBox1.Items.Strings;
i := Length(Edit3.Text);
Edit3.SelStart := j;
Edit3.SelLength := i-j;
end;
end;
end;

 
procedure TForm1.Edit3Change(Sender: TObject);
var
i, j: Integer;
begin
with ListBox1.Items do
begin
for i := 0 to Count-1 do
if Pos(Edit3.Text,Strings)=1 then break;
if i<Count then
begin
j := Length(Edit3.Text);
Edit3.Text := ListBox1.Items.Strings;
i := Length(Edit3.Text);
Edit3.SelStart := j;
Edit3.SelLength := i-j;
end;
end;
end;

后一部分没传上去
 
使用combo控件
 
老是贴不上来:(
procedure TForm1.Edit3Change(Sender: TObject);
var
i, j: Integer;
begin
with ListBox1.Items do
begin
for i := 0 to Count-1 do
if Pos(Edit3.Text,Strings)=1 then break;
if i<Count then
begin
j := Length(Edit3.Text);
Edit3.Text := ListBox1.Items.Strings;
i := Length(Edit3.Text);
Edit3.SelStart := j;
Edit3.SelLength := i-j;//能反过来就好
end;
end;
end;

 
1、申请一个动态数组 S :array of string;
2、procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(S,100);
n:=0;
end;
3、将EDIT中的输入存入S;
4、procedure TForm1.Edit1Change(Sender: TObject);
var
i :integer;
begin
if Edit1.Text='' then Exit;
for i:=0 to n do
begin
if Copy(S,0,length(Edit1.text))=Edit1.Text then
begin
Edit1.text :=S;
Break;
end;
end;
end;
先实现一部分,下一次 :!
 
各位能不能先试一下IE中地址输入智能化,
看看里面有什么特点!本人能力
所限,请各位帮忙。急!!!!!!!!
 
有API。
到这里http://www.intelligo.net/iedelphi/找
IEAddress,看源代码你就知道怎么做了,和IE的一模一样。
 
iambest:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i, j: Integer;
begin
if ComboBox1.Tag=1 then Exit;
with ComboBox1.Items do
begin
for i := 0 to Count-1 do
if Pos(ComboBox1.Text,Strings)=1 then break;
if i < Count then
begin
j := Length(ComboBox1.Text);
ComboBox1.Text := ComboBox1.Items.Strings;
i := Length(ComboBox1.Text);
ComboBox1.SelStart := j;
ComboBox1.SelLength := i-j;
end;
end;
end;
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#8 then ComboBox1.Tag := 1 else ComboBox1.Tag := 0;
end;
 
IE里是用了一个系统函数 SHAutoComplete
 
以下是用edit与listbox的例子,如果不用listbox,自已
建一个TStrings或用数据库也是一样的。

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i,oldlen:integer;
begin
if key in [8,37..40] then exit;
for i:=0 to listbox1.Items.Count-1 do
begin
if pos(edit1.text,listbox1.Items)=1 then
begin
oldlen:=length(edit1.text);
edit1.Text:=listbox1.items;

edit1.SelStart:=oldlen;
edit1.SelLength:=length(listbox1.items)
-oldlen;
exit;
end;
end;
end;
 
多人接受答案了。
 
后退
顶部