Re: automatische Suche in ListBox abschalten
Genau dieses Property meinte ich :-D Und wenn ich mich richtig erinnere gab es das auch schon bei Delphi7. Bei BDS2006 gab es dies auf jeden Fall.
|
Re: automatische Suche in ListBox abschalten
Das gab es auch schon ab Delphi 6, vorher nicht.
Bei den älteren Delphiversionen (getestet 6, 7, 2006) bewirkt es aber nichts. Zumindest nicht unter Windows XP (virtueller PC :mrgreen:), dabei sieht man im Quelltext, dass ohne AutoComplete der Quelltext für die Selektion per Filter nicht ausgeführt wird. Ich vermute, dass Windows das dennoch automatisch macht, hatte jetzt aber gerade auch keine Lust das genauer anzuschauen. |
Re: automatische Suche in ListBox abschalten
@BUG ...kein Problem, hab' ja auch ein bisschen was durcheinander gebracht. :oops:
Mir war nicht bewusst, dass im OnkeyPress-Ereignis nur Tastatureingaben ankommen die Zeichen erzeugen. naja wieder was gelernt. Hast du das Beispiel eigentlich mal getestet?
Delphi-Quellcode:
Es kann eigentlich gar nicht funktionieren, da zwar der Key auf 0 gesetzt und die Weiterverarbeitung der WM_KEYDOWN-Botschaft verhindert wird,
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if not (Key in [VK_UP, VK_DOWN]) then Key := 0; end; aber nicht die der WM_Char-Botschaft. Dass heißt es gibt trotzdem ein OnkeyPress-Ereignis und die Eingabe einer Zeichenerzeugenden Taste wird nicht abgefangen. Wie auch immer - die AutoComplete-Variante ist hier wohl der bessere Weg... |
Re: automatische Suche in ListBox abschalten
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:
zum sinnvollen Einsatz.
procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char);
begin Key := #0; end; 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:
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.
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; |
Re: automatische Suche in ListBox abschalten
Zitat:
Zitat:
|
Re: automatische Suche in ListBox abschalten
Zitat:
Delphi-Quellcode:
Erklärung zu Keyboard-Events und Verarbeitung
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin showmessage('down'); end; procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char); begin showmessage('press') end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz