![]() |
Delphi-Version: 5
Auswahl eines ComboBox-Elements per ENTER/durch das System
Abend,
ich habe eine ComboBox wie folgt eingestellt (relevante Eigenschaften): AutoComplete: False AutoDropDown: True AutoSelect: True Style: csDropDown D.h.: Wenn ich die Box anklicke, wird der vorgeschriebene Text markiert, ich kann daraufhin etwas eingeben, worauf sich die Liste öffnet, und wenn das Eingegebene mit einem Listen-Element übereinstimmt, bewegt sich die Scrollbar zu den Übereinstimmungen. Wenn ENTER gedrückt wird, wird das nun oben in der Liste der ComboBox stehende (und somit am meisten mit zuvor eingegebenem Text übereinstimmende) Element ausgewählt. Das Problem ist jetzt bloß, das durch diesen Auswahlweg nicht die entsprechende Prozedur ausgeführt wird, da ich OnChange benutze (und durch diese Auswahl - nach meinem Verständnis - der Code das Ausgewählte Element festlegt, was aber bei OnChange nicht legitim ist). Welches Ereignis könnte ich dafür benutzen (habe noch kein entsprechendes entdeckt) bzw wie könnte ich das beheben? EDIT.: ich seh grad da oben steht Delphi Version 5 - stimmt nicht, habe es bloß übersehen, sollte das was bringen |
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Möglichweise bringt dir
Delphi-Quellcode:
oder
OnCloseUp
Delphi-Quellcode:
etwas?!
OnSelect
|
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Nope, leider nicht.
Ich hab mir ein Label gemacht, um den ItemIndex zu überprüfen, aber es bleibt leer. |
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Zitat:
|
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Hab schon gemerkt und behoben. Wert bleibt trdm auf -1
|
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Wie wärs mit OnClick?
|
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Nein, leider nicht. Hatte es schon ausprobiert, aber es ergibt an sich auch wenig Sinn, wenn es in diesem Zusammenhang (wo ich doch per ENTER auswählen können will) genutzt würde.
Ich hatte eine Idee für ein Work-Around mit meinen Mitteln:
Code:
Wäre zwar haufenweise Schreibarbeit, aber ich sehe mit meinem Können momentan keine andere Lösung.
if Key=13 //müsste Enter sein
then do if ComboBox1.Text:='x' then ComboBox1.Itemindex:=0 else if ComboBox1.Text:='y' then ComboBox1.Itemindex:=1 else ... etc etc Die Sache dabei ist auch, dass ich es schon so versucht hatte, darauf aber die Antwort kam, dass Boolean expected wäre (bei jeder einzelnen Zeile)... Kann mir das wer erklären bzw meinen Fehler beheben (möglichst simpel)? |
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Zitat:
Delphi-Quellcode:
bzw.
if Key = Char(VK_RETURN) then begin
i := ComboBox1.Items.IndexOf(ComboBox1.Text); if i >= 0 then ComboBox1.ItemIndex := i; end;
Delphi-Quellcode:
Schreibarbeit? Die CB kennt doch ihre Einträge, also fragt man sie einfach. :angle:
if Key = Char(VK_RETURN) then
ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(ComboBox1.Text); |
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
*war mal wieder zu spät*
|
AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
Hi, danke für diese - wie immer (seit 13 Jahren) - schnelle Antwort.
Hätte ich gewusst, dass man das so abfragen kann, hätte ich es vllt auch so aufgeschrieben ;) Eine Sache gibt es noch: ich kenn mich mit KeyDown nicht aus und in den Nachrichten erhalte ich den Hinweis: Zitat:
Code:
Was ist da das Problem?
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: word;
Shift: TShiftState); begin if Key = Char(VK_RETURN) then begin i := ComboBox1.Items.IndexOf(ComboBox1.Text); if i >= 0 then ComboBox1.ItemIndex := i; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz