Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eintrag in einer ComboBox per Buchstabe wählen (https://www.delphipraxis.net/60115-eintrag-einer-combobox-per-buchstabe-waehlen.html)

VizeTE 3. Jan 2006 12:35


Eintrag in einer ComboBox per Buchstabe wählen
 
Hallo,

ich habe ein ComboBox (Style=DropDownList) mit ein paar Einträgen.
Nun möchte ich den Anfangsbuchstaben eines Eintrages drücken und der Wert soll automatisch ausgewählt werden.
Soweit ist das ja schon in der Standard-ComboBox implementiert.

Jetzt mein Problem:
Wenn ich den Eintrag gewählt habe und dann den Anfangsbuchstaben eines anderen Eintrages drücke wird dieser nich gewählt. Existieren mehrere Einträge mit dem selben Anfangsbuchstaben dann kann ich nur noch zwischen diesen wechseln. Ein Eintrag mit einen anderen Anfangsbuchstaben kann nicht mehr gewählt werden. (Geht erst wieder wenn ich z.B. mit Tab des Fokus wegnehme und wieder setze)

Das Problem nochmal am Beispiel:

ComboBox enthält der Wert: (eins, zwei, drei, zwansig)
Aktiviere ich durch drücken von "z" den Wert zwei kann ich danach nicht durch drücken von "d" den Wert drei wählen. Wenn ich den Fokus neu setzte dann geht das wieder. Wenn ich statt dessen nochmal "z" drücken würde springt der aktive Eintrag zwischen zwei und zwansig hin und her.

Wenn es keine Möglichkeit gibt das zu ändern wäre es für mich auch ok wenn man irgendwie dieses Standardverhalen abschlaten kann. Dann implementiere ich es halt selbst.

Danke!

blablab 3. Jan 2006 13:26

Re: Eintrag in einer ComboBox per Buchstabe wählen
 
Willst du, dass man nur einen buchstaben angeben kann und dann den entsprechenden eintrag auswählt?

Dann kannst du ja sagen, er soll nach jedem tastendruck den ganzen text markieren:

Delphi-Quellcode:
ComboBox.OnChange
begin
  Combobox.SelectAll
end;

VizeTE 3. Jan 2006 18:06

Re: Eintrag in einer ComboBox per Buchstabe wählen
 
Da die ComboBox vom Typ "DropDownList" ist kann man in dem Textfeld eh nichts eingeben. Man kann lediglich einen Eintrag aus der Liste wählen.

Ich möchte beim drücken von z den ersten Listeneintrag der mit z beginnt. Beim zweiten mal drücken von z den zweiten Listeneintrag der mit z beginnt usw.
Mein Problem ist jedoch wenn ich z drücke bekomme ich den ersten Eintrag mit z. Wenn ich dananch aber b drücke bekomme ich nicht den ersten Eintrag mit b (obwohl einer existiert).

marabu 3. Jan 2006 18:27

Re: Eintrag in einer ComboBox per Buchstabe wählen
 
Hi,

Zitat:

Zitat von VizeTE
Ein Eintrag mit einen anderen Anfangsbuchstaben kann nicht mehr gewählt werden. (Geht erst wieder wenn ich z.B. mit Tab des Fokus wegnehme und wieder setze)

das von dir beschriebene Verhalten ist nicht normal und wird vermutlich durch deinen eigenen Code verursacht. Selbstverständlich kann ich die Buchstaben wechseln ohne zwischendurch dem Control den Fokus zu entziehen.

Neujahrsgrüße vom marabu

blablab 3. Jan 2006 18:35

Re: Eintrag in einer ComboBox per Buchstabe wählen
 
Tut mir leid, da kann ich dir nicht weiterhelfen, denn bei mir funktioniert das automatisch:

wenn ich z drücke wählt er den ersten eintrag mit z aus.
wenn ich mehrmals z drücke, wechselt er zwischen den einträgen, die mit z beginnen
wenn ich z und dann b drücke, wählt er erst den ersten eintrag, der mit z beginnt aus, dann den ersten eintrag, der mit b beginnt.
(außer es gibt einen eintrag, der mit "zb" anfängt)

(Ich benutze Delphi7; die Componente TCombobox mit Style = csDropDownList)

VizeTE 4. Jan 2006 08:17

Re: Eintrag in einer ComboBox per Buchstabe wählen
 
Ich habe nochmal ein wenig rumgespielt und dabei ist mir aufgefallen, daß dieser Effekt nur auftritt wenn ich die Eigenschaft "Sorted" der ComboBox auf true setz.

Für mich ist es erstmal ok. Dann deaktiviere ich "Sorted" halt wieder nachdem ich alle Elemente eingefügt habe.

Dennoch wäre es schön wenn ich wüßte wie es richtig geht. Kann ja durchaus mal vorkommen das ich öfter Elemente hinzufüge und entferne.

ManuMF 4. Jan 2006 10:01

Re: Eintrag in einer ComboBox per Buchstabe wählen
 
Schon mal probiert, nach einem Buchstaben die Rücktaste (#8) zu drücken? Vielleicht geht es dann wieder mit einem anderen Buchstaben.

Gruß,
ManuMF

VizeTE 4. Jan 2006 10:36

Re: Eintrag in einer ComboBox per Buchstabe wählen
 
Habe ich mal nachgeholt :zwinker:
Dann funktioniert es auch. Aber diese Lösung finde ich nicht sehr Anwenderfreundlich. Da denke ich ist der Weg über das deaktivieren der Sorted-Eigenschaft der Komponente besser da sich da keine Änderungen für den Benutzer ergeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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