Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FreePascal Auswahl eines ComboBox-Elements per ENTER/durch das System (https://www.delphipraxis.net/185395-auswahl-eines-combobox-elements-per-enter-durch-das-system.html)

qiLy4n 6. Jun 2015 17:30

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

Aviator 6. Jun 2015 17:33

AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
 
Möglichweise bringt dir
Delphi-Quellcode:
OnCloseUp
oder
Delphi-Quellcode:
OnSelect
etwas?!

qiLy4n 6. Jun 2015 17:51

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.

Sir Rufo 6. Jun 2015 23:32

AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
 
Zitat:

Zitat von qiLy4n (Beitrag 1304341)
Nope, leider nicht.

Ich hab mir ein Label gemacht, um den ItemIndex zu überprüfen, aber es bleibt leer.

Dann hast du bei der Darstellung etwas falsch gemacht, denn leer dürfte das nicht bleiben, aber anscheinend ist der Code zu geheim ... da können wir nicht helfen.

qiLy4n 6. Jun 2015 23:36

AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
 
Hab schon gemerkt und behoben. Wert bleibt trdm auf -1

baumina 8. Jun 2015 06:24

AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
 
Wie wärs mit OnClick?

qiLy4n 8. Jun 2015 09:20

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:
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
Wäre zwar haufenweise Schreibarbeit, aber ich sehe mit meinem Können momentan keine andere Lösung.
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)?

himitsu 8. Jun 2015 09:42

AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
 
Zitat:

Delphi-Quellcode:
if ComboBox1.Text:='x' then

Zuweisung oder Vergleich? :wink:

Delphi-Quellcode:
if Key = Char(VK_RETURN) then begin
  i := ComboBox1.Items.IndexOf(ComboBox1.Text);
  if i >= 0 then
    ComboBox1.ItemIndex := i;
end;
bzw.
Delphi-Quellcode:
if Key = Char(VK_RETURN) then
  ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(ComboBox1.Text);
Schreibarbeit? Die CB kennt doch ihre Einträge, also fragt man sie einfach. :angle:

baumina 8. Jun 2015 09:48

AW: Auswahl eines ComboBox-Elements per ENTER/durch das System
 
*war mal wieder zu spät*

qiLy4n 8. Jun 2015 10:14

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:

unit1.pas(81,28) Error: Incompatible types: got "Char" expected "LongWord"
... bei diesem Code:

Code:
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;
Was ist da das Problem?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Seite 1 von 3  1 23      

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