Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
Delphi XE5 Enterprise
|
Autovervollständigen in Edit-Feld
10. Mai 2006, 14:22
Hallo,
folgender Code liegt vor:
Delphi-Quellcode:
procedure EditAutoComplete(Edit: TEdit; Items: TStringList);
var
I, StartPos: Integer;
begin
for I := 0 to Items.Count - 1 do
begin
with Edit do
begin
if (Text = '') or (LowerCase(Items[I]) = LowerCase(Text)) then
Exit;
if StrLComp(PChar(LowerCase(Items[I])), PChar(LowerCase(Text)),
Length(Text)) = 0 then
begin
StartPos := Length(Text);
Text := Text + Copy(Items[I], StartPos + 1, Length(Items[I]));
SelStart := StartPos;
SelLength := Length(Text) - StartPos;
Exit;
end;
end;
end;
end;
Wenn man die Procedure nun mit einem Edit-Feld und einer Stringliste aufruft, verhält sie sich wie man es vom IE mit dem Autovervollständigen gewohnt ist.
Nur irgendwie klappen die Tasten " Entf" , " Backtaste" etc. nicht mehr.
Weiß einer wieso? Ich rühre diese Tasten doch gar nicht an, oder habe ich einen Fehler in meinem Code, den ich nicht sehe?
Beispiel für Aufruf:
Edit-Feld auf Form platzieren.
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var
Demo: TStringList;
begin
Demo := TStringList.Create;
Demo.Add('brot');
Demo.Add('brötchen');
Demo.Add('kuchen');
Demo.Add('kaffee');
EditAutoComplete(Edit1, Demo);
Demo.Free;
end;
Catbytes
|
|
Zitat
|