Habe ein kleines Problem. Ich habe ein Adresserfasstool geschrieben und beim Eingeben der Postleitzahl wird automatisch die Ortschaft erzeugt (Lookup). Das Problem liegt darin, das eine PLZ nicht eindeutig einem Ort zugewiesen werden kann, deswegen wollte ich eine autocomplete-Funktion á la IExplorer implementieren. Das ganze funktioniert auch ganz schön, dass Problem liegt nur darin, dass man keine Ortschaft eingeben kann, die nicht in der DB verzeichnet ist (z.B. Musterstadt o.ä). Hier meine Implementierung: (Kann mir jemand helfen?)
procedure TForm1.DBEdit1Change(Sender: TObject);
var s1: string;
s2: string;
begin
if ((lastKey = 8) or (lastKey = VK_DELETE))then begin
lastKey := 0;
Exit;
end;
lastKey := 0;
s1 := DBEdit1.Text;
s2 := s1;
with Table1 do
begin
if Not Locate(‚ORT‘,DBEdit1.Text,[loPartialKey]) then
begin
if length(s2) = 1 then
begin
DBEdit1.Text := ‚‘;
exit;
end;
System.delete(s2,length(s2),1);
DBEdit1.Text := s2;
s1 := s2;
Locate(‚ORT‘,DBEdit1.Text,[loPartialKey]);
end;
s1 := FieldByName(‚ORT‘).AsString;
DBEdit1.Text := copy(s1,1,length(s2)) +
copy(s1,length(s2)+1,length(s1));
DBEdit1.SelStart := Length(s2);
DBEdit1.SelLength := length(s1) - length(s2);
end;
inherited;
end;
procedure TForm1.DBEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
lastKey := Key;
end;
Danke im Voraus…