// Wenn in ein TEdit Text eingegeben wird, wird dieser Text anhand einer Liste
// automatisch komplettiert. Im Beispiel verwende ich dazu die Strings einer
// Stringliste. Man kann natürlich auch die Items einer Listbox o.ä. nehmen.
// Die Breite des TEdit
(ClientWidth) muss bei diesem Beispiel ausreichend
// für die Textbreite sein.
// Zusätzlich kann man mittels
mitSelection bestimmen, ob ein gefundenes Wort
// uneingeschränkt gilt, oder selektiert zum Überschreiben angeboten wird.

// Beispiel (mit der unten angegebenen Liste):
// mitSelection = True
// Eingabe "H" --> Haus --> Eingabe "e" --> Herd  --> Eingabe "n" --> Hen
// mitSelection = False
// Eingabe "H" --> Haus --> Eingabe "e" --> Hause --> Eingabe "n" --> Hausen

// Hier noch ein weiteres Beispiel, das die Wirkungsweise
// verdeutlichen soll (
mitSelection = True):

Eingabe: Ergebnis:
T Test
i Tisch
s Tisch
c Tisch
h Tisch
b Tischbein


// Getestet mit D4 unter Win98

const 
  mitSelection: boolean = true; 
  ergaenzen: boolean = true; 
 
var 
  sl: TStringlist; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  sl := TStringlist.create; 
  sl.sorted := true; 
  sl.Duplicates := dupIgnore; 
  sl.add('Test'); 
  sl.add('Hausmeister'); 
  sl.add('Tisch'); 
  sl.Add('Tischbein'); 
  sl.add('Haus'); 
  sl.add('Erde'); 
  sl.add('Mensch Meyer'); 
  sl.add('Computer'); 
  sl.add('Erde'); 
  sl.add('Herd'); 
// oder Loadfromfile o.ä. 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  sl.free; 
end; 
 
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; 
  Shift: TShiftState); 
var x, st: integer; 
begin 
  if (key < 48) or not ergaenzen then exit; 
  st := length(TEdit(sender).text); 
  for x := 0 to sl.count - 1 do 
    if pos(TEdit(sender).text, sl.strings[x]) = 1 then begin 
      TEdit(sender).text := sl.strings[x]; 
      if mitSelection then begin 
        TEdit(sender).selstart := st; 
        TEdit(sender).sellength := length(TEdit(sender).text) - st; 
      end else 
        TEdit(sender).selstart := length(TEdit(sender).text); 
      break; 
    end; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  mitSelection := not mitSelection; 
end; 
 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
  ergaenzen := not ergaenzen; 
end; 



Zugriffe seit 6.9.2001 auf Delphi-Ecke