// Wenn bei einer Combobox die Eigenschaft Style auf csDropDown steht,
// kann man eine "Autovervollständigung" implementieren, um den
// entsprechenden
ItemIndex bereits durch Eingabe von ein oder zwei
// Buchstaben anzuwählen.

// Getestet mit D4 unter XP

var 
  ok: boolean; 
 
// ein paar Werte zum Testen 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  with ComboBox1 do begin 
    style := csDropDown; 
    sorted := true; 
    items.add('Test'); 
    items.add('Versuch'); 
    items.add('Delphi'); 
    items.add('DBR'); 
    items.add('ComboBox'); 
    itemindex := 0; 
  end; 
end; 
 
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; 
  Shift: TShiftState); 
begin 
 ok := Key <> 8; 
end; 
 
procedure TForm1.ComboBox1Change(Sender: TObject); 
var 
  s: string; 
  i: integer; 
begin 
  if ok then 
    with ComboBox1 do begin 
      s := Text; 
      i := perform(CB_FINDSTRING, 0, integer(@s[1])); 
      if i >= 0 then begin 
        postmessage(handle, CB_SETCURSEL, i, 0); 
        postmessage(handle, CB_SETEDITSEL, 0, MAKELPARAM(length(s), maxword)); 
      end; 
    end; 
end;


// Hinweis:
// Innerhalb des Events
OnChange der Combobox kann man zwar mittels
//
SendMessage oder Perform Daten abfragen, aber zum setzen sollte
// man
PostMessage verwenden, das sonst zwar der richtige Text in der
// Box angezeigt wird,
ItemIndex aber meist auf -1 steht, was bei Abfragen
// zu Fehlern führt.



Zugriffe seit 6.9.2001 auf Delphi-Ecke