AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

automatische Suche in ListBox abschalten

Ein Thema von delphin · begonnen am 30. Mär 2010 · letzter Beitrag vom 1. Apr 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: automatische Suche in ListBox abschalten

  Alt 31. Mär 2010, 08:25
Genau dieses Property meinte ich Und wenn ich mich richtig erinnere gab es das auch schon bei Delphi7. Bei BDS2006 gab es dies auf jeden Fall.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: automatische Suche in ListBox abschalten

  Alt 31. Mär 2010, 08:32
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 ), 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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#13

Re: automatische Suche in ListBox abschalten

  Alt 31. Mär 2010, 09:21
@BUG ...kein Problem, hab' ja auch ein bisschen was durcheinander gebracht.

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:
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if not (Key in [VK_UP, VK_DOWN]) then
    Key := 0;
end;
Es kann eigentlich gar nicht funktionieren, da zwar der Key auf 0 gesetzt und die Weiterverarbeitung der WM_KEYDOWN-Botschaft verhindert wird,
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...
Micha
  Mit Zitat antworten Zitat
delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#14

Re: automatische Suche in ListBox abschalten

  Alt 1. Apr 2010, 02:37
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: automatische Suche in ListBox abschalten

  Alt 1. Apr 2010, 09:10
Zitat von delphin:
ListBox1.AutoComplete:=false und Delphi 7:

1. Der Schalter ist nicht im Objektinspektor zugänglich, aber es gibt ihn
Bei mir gibt es den (Delphi 7 PE im virtuellen PC getestet).

Zitat von delphin:
2. Die Wirkung auf das von mir beschrieben Verhalten = 0
Richtig, habe ich ja schon geschrieben, ich vermute mal das liegt an einer Automatik von Windows, denn der Quelltext zum Filtern wird korrekt übersprungen (hab ich im Debugger kurz getestet).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#16

Re: automatische Suche in ListBox abschalten

  Alt 1. Apr 2010, 11:41
Zitat:
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;
Das ist so nicht richtig! Setz doch mal in beiden Prozeduren bei showmessage einen Breakpoint und schau was passiert!

Delphi-Quellcode:
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;
Erklärung zu Keyboard-Events und Verarbeitung
Micha
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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