Also nun doch noch ein Abschlussbericht zu Eurern Lösungen.
ListBox1.AutoComplete:=false und Delphi 7:
1. Der Schalter ist nicht im Objektinspektor zugänglich, aber es gibt ihn
2. Die Wirkung auf das von mir beschrieben Verhalten = 0
Somit kommt zu mindest im Delphi 7 nur die Variante von IceBube:
Delphi-Quellcode:
procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char);
begin
Key := #0;
end;
zum sinnvollen Einsatz.
Das Ausklammern der Kursorsteuertasten VK_Down, VK_UP, VK_Left etc. kann man sich übrigens schenken, da sie kein KeyPress-Ereignis auslösen, zumindest nicht unter Win2000.
Das Abfangen des Ereignisses
ListBox1KeyPress gemäss Lösungsvorschlag von BUG greift viel zuspät ins Geschehen ein. Das könnt Ihr ja einfach mal hiermit testen:
Delphi-Quellcode:
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin ShowMessage('leider schon zu spät');
if not (Key in [VK_UP, VK_DOWN]) then Key:=0;
end;
Der Rollbalken springt beim Drücken einer Taste, dessen Char einem Anfangsbuchstaben des Strings in der Liste entspricht sofort an die entsprechende Stelle und
erst danach geht die Messagebox auf.