Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Seltsames Klickverhalten in Combobox (https://www.delphipraxis.net/159129-seltsames-klickverhalten-combobox.html)

amigage 15. Mär 2011 16:55

Seltsames Klickverhalten in Combobox
 
Hallo liebe Delphi Gemeinde,

ich habe ein Combobox-Problem, das ich vorher mit Delphi 5 nicht hatte. Jetzt nutze ich Delphi 2009.

Die Combobox arbeitet im Style=csDropDownList und ist mit Daten gefüllt. Wenn ich mit der Maus darauf klicke, kann ich mit der Tastatur den entsprechenden Eintrag vorwählen und mit einem Mausklick übernehmen. Früher hat er die Auswahl auch übernommen, wenn ich nach der Tastatur-Vorauswahl mit der Maus außerhalb geklickt habe, um einem anderen Element den Fokus zu geben.

Wie bekomme ich es wieder hin, dass er automatisch den vorselektierten Eintrag übernimmt?
Wie gesagt, unter Delphi 5 klappte das bisher so.

Danke...

WM_CLOSE 15. Mär 2011 18:53

AW: Seltsames Klickverhalten in Combobox
 
man könnte fieserweise auch das Klickereignis manuell auslösen.

amigage 16. Mär 2011 10:31

AW: Seltsames Klickverhalten in Combobox
 
Weißt Du auch wie? Ich bekomme es nämlich nicht hin.

Da die Selektion ja bei einer Pfeiltasten-Auswahl und "Auswärts"-Klick übernommen wird, habe ich es auch schon bei
Delphi-Quellcode:
OnKeyDown
mit einer Simluation von VK_UP und VK_DOWN versucht, aber da hängt er in einer Endlosschleife, obwohl ich das Ereignis vor Ausführung auf NIL setze.

WM_CLOSE 16. Mär 2011 10:40

AW: Seltsames Klickverhalten in Combobox
 
Ich hätte es jetzt so gemacht:
Delphi-Quellcode:
Objekt.OnNotifyEreignis(Objekt);

alfold 16. Mär 2011 10:45

AW: Seltsames Klickverhalten in Combobox
 
mh.. kann ich nicht reproduzieren.
Ohne zusätzliche events, wird mit den Pfeiltasten die selektierte übernommen. Egal wo ich danach mit der Maus hinklicke.
€: Kann es sein das Du im onChangeereignis was machst?

Mit Maus die Liste überfahren(also move) wird kein klick Ereigniss ausgeführt. War schon immer so! Das musste man selber schreiben:wink:

Gruss alfold

stahli 16. Mär 2011 11:37

AW: Seltsames Klickverhalten in Combobox
 
Zitat:

Zitat von amigage (Beitrag 1088938)
Weißt Du auch wie? Ich bekomme es nämlich nicht hin.

Da die Selektion ja bei einer Pfeiltasten-Auswahl und "Auswärts"-Klick übernommen wird, habe ich es auch schon bei
Delphi-Quellcode:
OnKeyDown
mit einer Simluation von VK_UP und VK_DOWN versucht, aber da hängt er in einer Endlosschleife, obwohl ich das Ereignis vor Ausführung auf NIL setze.

Nur mal ein Hinweis, auf den man nicht gleich kommt (falls das bei Dir eine Rolle spielen könnte):
Wenn man die Items neu definiert, wird automatisch ein Änderungsereignis ausgelöst (für die Combobox, nicht für die Liste!). Die Ereignisse unterscheiden sich auch noch je nach eingestelltem Style.
Ich habe daher eine ganze Weile gebraucht, die ComboBox auf meine Zwecke anzupassen (diese benutzt jetzt Eigenschaften von Objekten zur Darstellung, ähnlich wie eine DBComboBox).
Den Code kann ich bei Bedarf gern zeigen, der ist aber wohl schwer allgemein nutzbar.

amigage 16. Mär 2011 12:58

AW: Seltsames Klickverhalten in Combobox
 
Zitat:

Zitat von alfold (Beitrag 1088942)
Ohne zusätzliche events, wird mit den Pfeiltasten die selektierte übernommen.

Jaja, bei der Pfeiltastenauswahl wird die Auswahl übernommen, aber nicht, wenn Du bspw. den ersten Buchstaben eines Eintrags eintippst, um zu ihm zu springen. Den Fokus verliert er, wenn Du dann irgendwo anders hinklickst. Ist so eine Art "Auswahl-Abbrechen"-Funktion. Früher war das nicht so

Ich habe mir jetzt folgendermaßen geholfen, indem ich die Pfeiltasten im OnKeyDown Event simuliere:

Delphi-Quellcode:
procedure TMyDlg.ComboBoxKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ComboBox.OnKeyDown := NIL;
  PostKeyEx32(VK_DOWN, [], False);
  PostKeyEx32(VK_UP, [], False);
  Application.ProcessMessages;
  ComboBox.OnKeyDown := ComboBoxKeyDown;
end;
PostKeyEx32

Ist jedoch nicht die feine englische Art. Zumal die Lösung nicht funktioniert, wenn ich den letzten Eintrag selektieren will. ich bekomme aber leider nicht raus, welchen er selektiert hat, da das ItemIndex sich bei Buchstabeneingaben nicht ändert.

alfold 16. Mär 2011 13:08

AW: Seltsames Klickverhalten in Combobox
 
Na aber, dafür musst du das onChangeereignis benutzen und dann durch die Liste irritieren damit wird der Ausdruck selektiert und auch gleich angezeigt. Das hat nix mit Mouse zu tun. Das hast Du oben nicht erwähnt!

alfold

amigage 16. Mär 2011 14:07

AW: Seltsames Klickverhalten in Combobox
 
Sorry, ich erkläre es genauer.

Ich klicke mit der Maus auf den rechten Pfeil der Combobox und gebe nur den Buchstaben F ein, um zu dem Eintrag zu springen, der mit F beginnt. Er spingt auch dahin. Man könnte denken, der Eintrag sei selektiert. Also klicke ich mit der Maus z.B. in das nächste Eingabefeld. *schwupps* Die Combobox springt wieder zur vorherigen Auswahl.

Wie gesagt, wenn man die Pfeiltasten nutzt, wird die Auswahl selektiert und beim Wegklicken - und somit Schließen der Combobox-Auswahl - der Eintrag übernommen.

alfold 16. Mär 2011 14:15

AW: Seltsames Klickverhalten in Combobox
 
Kann auch diesen effekt nicht reproduzieren. Egal wo ich nach Eingabe des Buchstaben hinklicke, es steht sofort der volle string in der Eingabe und er bleibt! :gruebel:

alfold


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.
Seite 1 von 2  1 2      

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