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 PopUp-Menü einer Combobox "verschwinden" lassen (https://www.delphipraxis.net/5511-popup-menue-einer-combobox-verschwinden-lassen.html)

DBman 9. Jun 2003 17:44


PopUp-Menü einer Combobox "verschwinden" lassen
 
Ich habe folgendes Problem:

Ich habe eine Combobox und ein Editfeld.

Wenn ich den Focus auf der Combobox habe und F3 drücke möchte ich in das Editfeld kommen (also Focus aufs Editfeld) und das Popup-Menü von der Combobox soll nicht ausgerollt sein.

(also quasi zum hin- und herspringen)

Wenn ich jedoch F3 drücke , so "rollt" der Inhalt der Combobox nach unten aus , und der Focus wird auf das Editfeld gesetzt...


FRAGE : Wie kann ich das ausrollen verhindern??

Ps:Habe schon bei PopUpMenu.free geguckt und so weiter , aber bin da nicht weitergekommen...
:|

Luckie 9. Jun 2003 17:55

Combobox, Popupmenü, ausrollen? Redest du von der Liste der Combobox oder was?
Wenn die Combobox den Focus hat sthet der Cursor doch automatsich im Edit von der Combobox - oder nicht?

DBman 9. Jun 2003 18:01

Nein!

Es gibt 2 Komponenten in meinem Programm :

Komponente 1 : edit_feld : TEdit;
Komponente 2 : cb_box : TComboBox

Nun habe ich den Focus auf der Combobox.
Drücke F3 , (dann wird der Focus auf edit_feld gesetzt) .
Und dann passiert folgendes : Die Liste der ComboBox rollt aus....

Das soll aber nicht so sein. Die ComboBox liste soll nicht ausrollen.

Wie kann ich das Ändern?

Luckie 9. Jun 2003 18:10

Wie setzt du denn den Focus auf das Edit?

Wenn ich das so mache:
Delphi-Quellcode:
procedure TForm1.CtlKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F3 then
    SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
end;
Verhält es sich so, wie erwartet, es klappt nicht auf. Keine Ahnung, was du da machst.

DBman 9. Jun 2003 18:28

Ahso.
Ja ich mache das nich über ein Handle , (damit kenne ich mich noch gar nich so mit aus)
Ich hab das einfach über Edit1.SetFocus gesetzt...
Aber wenns so funktioniert : Dankeschön !

Christian Seehase 9. Jun 2003 18:31

Moin DBMan,

ich hab's eben mal so ausprobiert:

Delphi-Quellcode:
procedure TfrmMAIN.ComboBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_F3 then Edit1.SetFocus;
end;
geht auch wie erwartet.

Bei Luckies Variante musst Du dafür sorge tragen, dass das Edit Feld auch das nächste in der Tabulatorreihenfolge ist.

DBman 9. Jun 2003 18:32

Hm nee , das muss noch an irgendwas anderem liegen... wirklich komisch.
Ich probier nochmal n bisschen rum , und wenn es dann nich klappen sollte kann ich das Prog ja mal posten.

DBman 9. Jun 2003 18:33

Das is ja krank!
Ich weiss woran es liegt... aber wie ich das löse weiss ich auch nich:
Und zwar hab ich da F4 als taste genommen , und dann rollt der das tatsächlich auf...
Muss wohl dran liegen das Windows F4 für das schliessen zusammen mit ALT +F4 reserviert hat oder sowas.... kannste mir da nochmal helfen??

Luckie 9. Jun 2003 18:34

Hast du irgendwas bei OnExit von der Combobox stehen?

Christian Seehase 9. Jun 2003 18:35

Moin DBMan,

nein, das hängt damit zusammen, dass F4 in Windows das ausklappen der Liste einer ComboBox bewirkt (standard).
Geh' doch mal in die AdressComboBox des Explorers und drücke F4.

Luckie 9. Jun 2003 18:40

Öhm @DBMan im ersten Post hast du noch von F3 geredet. :roll:

DBman 10. Jun 2003 09:44

Ja ich hatte aus Versehen F3 geschrieben (weil ich dachte dass das wumpe is) .. aber meinte F4..

Äh... ja das stimmt mit F4 rollt sone ComboBox standardmäßig aus....

Aber wie ändere ich dass denn , dass die das nich mehr macht??
:roll:

Christian Seehase 10. Jun 2003 10:21

Moin DBMan,

warum willst Du das Standardverhalten einer Komponente ändern?

DBman 10. Jun 2003 10:31

Weil ich nunmal nich will , dass wenn ich F4 drücke dass diese blöde ComboBox ausscrollt.
Mein Programm soll ja mir gehorchen.Wie son Hund , dem gewöhnt man ja schließlich auch sein Standardverhalten ab. :spin:

Ne aber jetzt wieder ernsthaft werden: Ich möchte halt mit der Taste F4 hin- her springen können. Und in diesem Fall ist es halt nicht angebracht , dass dann die Combobox ausgescrollt bleibt...

DBman 11. Jun 2003 17:40

Kann mir da nu wer weiterhelfen , wie man das Standardverhalten von Komponenten ändert?
Habe da auch noch einige andere Standardverhalten-Probleme z.B. mit TDBGrid.Zum Beispiel möchte ich nicht , dass das auch die EnterTaste reagiert...
Wäre toll wenn jemand da einen Rat wüsste
:spin:

Christian Seehase 11. Jun 2003 21:51

Moin DBman,

such' mal hier im Forum nach WM_GETDLGCODE. Damit hatte ich vor kurzem ein Beispiel gezeigt, wie man die TAB Taste in einem Edit abfangen kann.
Für Dich kommt dann wahrscheinlich statt DLGC_WANTTAB DLGC_WANTALLKEYS in Frage.


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