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/)
-   -   Warum kann die ComboBox nicht direkt aufklappen? (https://www.delphipraxis.net/168247-warum-kann-die-combobox-nicht-direkt-aufklappen.html)

Popov 10. Mai 2012 23:14

Warum kann die ComboBox nicht direkt aufklappen?
 
Ich kam auf die verrückte Idee, die ComboBox so einzustellen, dass es, wenn es nicht dem Fokus hat, auch nicht den DropDown-Button anzeigt. Der Code sollte einfach sein:

Delphi-Quellcode:
procedure TForm1.ComboBox1Enter(Sender: TObject);
begin
  ComboBox1.Style := csDropDown;
end;

procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
  ComboBox1.Style := csSimple;
end;
Bei OnEnter wird der Style csDropDown, sonst csSimple. Insoweit funktioniert es auch.

Das Problem ist, dass ich nach OnEnter nicht sofort auf DropDown-Button klicken kann. Tut sich nichts. Erst wenn ich erneut in das Fenster klicke, erst dann funktionert der DropDown-Button. Warum?

himitsu 10. Mai 2012 23:33

AW: Warum kann die ComboBox nicht direkt aufklappen?
 
Klicke nochmal in das Edit, dann geht's.

Tja, das Umgestelle scheint wohl den Fokus etwas durcheinanderzubringen.

Du kannst es ja mal mit SetFocus oder Folgendem versuchen.
Delphi-Quellcode:
ComboBox1.Style := csDropDown;
ComboBox1.Perform(CM_RECREATEWND, 0, 0);
Aber so viel erhoffe ich mir davo nicht, denn das Umstellen des Style erzeugt auch ein komplett neues WindowsControl und in dieses hattest du noch niemals reingeklickt. (der OnMouseDown kommt bei dem alten Control an und wo das OnMouseUp ankommt, kann man nur schwer sagen)

Du kannst höchstens mal versuchen den Style direkt über die WinAPI umzustellen und mußt dabei versuchen, daß die ComboBox nicht neu erstellt wird.

Ansonsten verwende doch mal die TComboBoxEx.

Popov 11. Mai 2012 00:11

AW: Warum kann die ComboBox nicht direkt aufklappen?
 
Danke, deine Lösung scheint zu funktionieren. Dass hier ein komplett neues WindowsControl erstellt wird, wusste ich nicht.

Codehunter 4. Mär 2014 12:25

AW: Warum kann die ComboBox nicht direkt aufklappen?
 
Hallo!

Ich fleddere mal diese Leiche weil ich grade genau das selbe versuche. Allerdings scheint die Lösung unter XE4 nicht mehr zu funktionieren. Das Style ändert sich nicht und es gibt am Ende Memleaks.

Grüße
Cody


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