Hallo,
ich lade eine DBase-Tabelle in einem DBGrid. Wenn der Anwender mit der Maus auf die Titelleiste klickt, soll es entweder aufsteigend oder absteigend sortiert werden. Nun, dies funktioniert soweit prima.
Zusätzlich gibt es eine Edit-Feld, worin der Benutzer die Anfangsbuchstaben z.B. eines zu suchenden Namen eingeben kann.
Ist der Index aufsteigend sortiert, klappt es prima, d.h. z.B. Eingabe von "m" und das DBGrid springt zum ersten Namen, der mit "m" beginnt.
Sobald jedoch der Index absteigend sortiert ist, wird erst zum richtigen Datensatz gesprungen, wenn der zu suchende Name komplett in das Edit-Feld eingegeben wurde.
z.B. Name = "mustermann" => erst bei vollständiger Eingabe von "mustermann" wird auf den Datensatz gesprungen (natürlich vorausgesetzt, dass der Name in der Datenbank existiert)
Wieso ist das so? Gibt es dafür eine Lösung?
Hiermit wird entweder ab- oder aufsteigend sortiert:
Delphi-Quellcode:
...
with KundenDbf do
...
if absteigend then AddIndex('IDXNAME','NAME',[ixDescending]) { Sortierreihenfolge absteigend }
else
AddIndex('IDXNAME','NAME',[]); { Sortierreihenfolge aufsteigend }
...
end;
...
Das steht in meiner "OnChange" - Routine vom Edit-Feld:
Delphi-Quellcode:
...
MainForm.KundenDbf.Locate('NAME',NameSuchEdit.Text,[loCaseInsensitive,loPartialKey]);
...
Gruß
Crowbar