//我通过如下的代码实现了区分大小写的自匹配,希望可以给楼主一点帮助 procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.AutoComplete:=False; end;procedure TForm1.ComboBox1Change(Sender: TObject); function FindText(Text:String):Integer; var i:Integer; begin Result:=-1; for i:=0 to ComboBox1.Items.Count-1 do begin if Copy(ComboBox1.Items[i],1,Length(Text))=Text then begin Result:=i; Break; end; end; end; var Index:Integer; cbText:String; begin cbText:=ComboBox1.Text; if Length(TComboBox(Sender).HelpKeyword)<Length(cbText) then begin Index:=FindText(cbText); if Index>=0 then begin ComboBox1.ItemIndex:=Index; ComboBox1.SelStart:=Length(cbText); ComboBox1.SelLength:=Length(ComboBox1.Items[Index])-Length(cbText)+1; end; end; TComboBox(Sender).HelpKeyword:=cbText; end;
begin
TComBoBox(Sender).Text := UpperCase(TComBoBox(Sender).Text);
TComBoBox(Sender).ItemIndex
:= TComBoBox(Sender).Items.IndexOf(TComBoBox(Sender).Text)
end;
ComboBox1.AutoComplete的源码
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.AutoComplete:=False;
end;procedure TForm1.ComboBox1Change(Sender: TObject);
function FindText(Text:String):Integer;
var
i:Integer;
begin
Result:=-1;
for i:=0 to ComboBox1.Items.Count-1 do
begin
if Copy(ComboBox1.Items[i],1,Length(Text))=Text then
begin
Result:=i;
Break;
end;
end;
end;
var
Index:Integer;
cbText:String;
begin
cbText:=ComboBox1.Text;
if Length(TComboBox(Sender).HelpKeyword)<Length(cbText) then
begin
Index:=FindText(cbText);
if Index>=0 then
begin
ComboBox1.ItemIndex:=Index;
ComboBox1.SelStart:=Length(cbText);
ComboBox1.SelLength:=Length(ComboBox1.Items[Index])-Length(cbText)+1;
end;
end;
TComboBox(Sender).HelpKeyword:=cbText;
end;