Autocomplete

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…

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?)

Hallo,
nimm doch einfach die Funktion vom Internet-Explorer. Sofern mindestens der IE4 auf dem Zielrechner installiert ist, kannst Du diese Funktionalität nutzen.

Ich habe das mal in einer Komponente gekapselt: http://www.jsse.de/filez/autocomplete.zip

MfG Jan

Hallo,
nimm doch einfach die Funktion vom Internet-Explorer. Sofern
mindestens der IE4 auf dem Zielrechner installiert ist, kannst
Du diese Funktionalität nutzen.

Ich habe das mal in einer Komponente gekapselt:
http://www.jsse.de/filez/autocomplete.zip

MfG Jan

Servus Jan,
habe das Problem vor geraumer Zeit selbst lösen können, es ist lediglich ein kleiner Bug in meinem Code :wink: Aber danke nochmals. Die Komponente findet bestimmt noch ihren Einsatz in einem anderen kleinen Projekt…

Gruss Dominik