![]() |
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... :| |
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? |
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? |
Wie setzt du denn den Focus auf das Edit?
Wenn ich das so mache:
Delphi-Quellcode:
Verhält es sich so, wie erwartet, es klappt nicht auf. Keine Ahnung, was du da machst.
procedure TForm1.CtlKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = VK_F3 then SendMessage(Handle, WM_NEXTDLGCTL, 0, 0); end; |
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 ! |
Moin DBMan,
ich hab's eben mal so ausprobiert:
Delphi-Quellcode:
geht auch wie erwartet.
procedure TfrmMAIN.ComboBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if Key = VK_F3 then Edit1.SetFocus; end; Bei Luckies Variante musst Du dafür sorge tragen, dass das Edit Feld auch das nächste in der Tabulatorreihenfolge ist. |
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. |
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?? |
Hast du irgendwas bei OnExit von der Combobox stehen?
|
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. |
Öhm @DBMan im ersten Post hast du noch von F3 geredet. :roll:
|
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: |
Moin DBMan,
warum willst Du das Standardverhalten einer Komponente ändern? |
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... |
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: |
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 20:47 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