![]() |
TComboBox: Mauszeiger verschwindet
Hallo zusammen :)
Ich habe hier ein kleines Problem mit einer TComboBox: Die Combobox ist mit Einträgen gefüllt, von denen der Anwender einen auswählen kann. Wird ein Text eingegeben, wird der Inhalt der Combobox nach dieser Eingabe gefiltert. Nach Abschluss des Filterns setzt ich
Delphi-Quellcode:
, um die Einträge passend zu der Eingabe anzuzeigen. Dabei verschwindet der Mauszeiger und erscheint erst wieder, wenn die Auswahlliste geschlossen wird.
TComboBox.DroppedDown := True
Weiß jemand, wie ich dies verhindere oder den Mauszeiger nach dem Setzen von DroppedDown wieder einblenden kann? Ein bisschen Code:
Delphi-Quellcode:
TForm.ComboBoxKeyPress(Sender: TObject; var Key: Char);
begin if (...) then //Behandlung Enter, Tab, Pfeiltasten else PostMessage(Handle, WM_MYMESSAGE, 0, 0); end; procedure TForm.MyMessageProcedure(var Msg: Message); begin if EnteredText = '' then //Liste neu füllen else begin //Liste filtern ComboBox.DroppedDown := True; end; end; |
AW: TComboBox: Mauszeiger verschwindet
Statt dem
Code:
kannst du mal
ComboBox.DroppedDown := TRUE
Code:
bzw.
SendMessage(ComboBox.Handle, CB_SHOWDROPDOWN, 1, 0)
Code:
probieren.
PostMessage
Bin mir nicht sicher, aber IMHO solltest du keine direkten VCL-Operationen in einem MessageHook verarbeiten. |
AW: TComboBox: Mauszeiger verschwindet
Hallo und danke für den Tipp :)
Funktioniert aber leider auch nicht. Habe noch ein bisschen herumprobiert: Das Verschwinden des Mauszeigers tritt nur auf, wenn
Delphi-Quellcode:
der Combobox auf False gesetzt ist und die Combobox dann über
AutoComplete
Delphi-Quellcode:
aufgeklappt wird, unabhängig davon, ob ich dieses direkt aufrufe oder mir (oder direkt der Combobox) eine Message schicke.
DroppedDown := True
Wenn ich die Liste nicht aufklappe (und AutoComplete False ist) verschwindet der Mauszeiger übrigens ebenfalls und erscheint wieder, sobald ich die Maus bewege. Das Verschwinden passiert aber nicht jedesmal, sondern teils erst beim zweiten oder dritten eingegebenen Zeichen und teils taucht der Mauszeiger auch bei Eingabe eines weiteren Zeichens wieder auf :? Werde mir wohl was mit einem Edit-Feld und einer Listbox zusammenbasteln. Edit: Beim Senden einer Message an die Combobox wird
Delphi-Quellcode:
natürlich nicht verwendet.
DroppedDown := True
|
AW: TComboBox: Mauszeiger verschwindet
Taucht der Mauszeiger denn wieder auf, wenn du die Mausposition per Code änderst / aktualisierst?
|
AW: TComboBox: Mauszeiger verschwindet
Ob das nun was damit zu tun hat, bleibt offen :D, aber
es gibt doch in Windows irgendwo (glaube Mauseinstellungen) eine Einstellung, dass er beim Tippen den Cursor ausblendet. Vll. greift diese Funktion teilweise in dieser Situation ?!?!?! :?: |
AW: TComboBox: Mauszeiger verschwindet
Ich hab die Lösung gefunden :)
@nuclearping: In deinem ersten Post war der Lösungsansatz bereits enthalten ;) Schicke ich die Message zum Aufklappen an die Combobox mit
Delphi-Quellcode:
verschwindet der Mauszeiger. Schick ich die Message dagegen mit
PostMessage
Delphi-Quellcode:
, bleibt der Mauszeiger erhalten.
SendMessage
Im KeyPress der Combobox schicke ich mir eine Message mit PostMessage um die Filterung durchzuführen und da drin habe ich dann mit
Delphi-Quellcode:
und
PostMessage(ComboBox.Handle, CB_SHOWDROPDOWN, 1, 0)
Delphi-Quellcode:
probiert, das Aufklappen zu steuern.
SendMessage(ComboBox.Handle, CB_SHOWDROPDOWN, 1, 0)
Vom KeyPress aus brauche ich ein PostMessage zur Filterung, damit die Eingabe bereits verarbeitet wurde und mir der aktuelle Text der Combobox zur Verfügung steht. Wenn ich das Aufklappen der Combobox nun aber bereits im KeyPress mit SendMessage durchführe und anschließend die weitere Bearbeitung wie bisher mit PostMessage anstoße, funktionierts wie gewünscht :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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