AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TComboBox: Mauszeiger verschwindet

Ein Thema von ensaron · begonnen am 6. Nov 2012 · letzter Beitrag vom 8. Nov 2012
Antwort Antwort
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#1

TComboBox: Mauszeiger verschwindet

  Alt 6. Nov 2012, 11:12
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 TComboBox.DroppedDown := True , um die Einträge passend zu der Eingabe anzuzeigen. Dabei verschwindet der Mauszeiger und erscheint erst wieder, wenn die Auswahlliste geschlossen wird.

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;
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: TComboBox: Mauszeiger verschwindet

  Alt 6. Nov 2012, 16:31
Statt dem
Code:
ComboBox.DroppedDown := TRUE
kannst du mal
Code:
SendMessage(ComboBox.Handle, CB_SHOWDROPDOWN, 1, 0)
bzw.
Code:
PostMessage
probieren.

Bin mir nicht sicher, aber IMHO solltest du keine direkten VCL-Operationen in einem MessageHook verarbeiten.
  Mit Zitat antworten Zitat
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TComboBox: Mauszeiger verschwindet

  Alt 7. Nov 2012, 13:41
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 AutoComplete der Combobox auf False gesetzt ist und die Combobox dann über DroppedDown := True aufgeklappt wird, unabhängig davon, ob ich dieses direkt aufrufe oder mir (oder direkt der Combobox) eine Message schicke.
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 DroppedDown := True natürlich nicht verwendet.

Geändert von ensaron ( 7. Nov 2012 um 13:43 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: TComboBox: Mauszeiger verschwindet

  Alt 7. Nov 2012, 17:37
Taucht der Mauszeiger denn wieder auf, wenn du die Mausposition per Code änderst / aktualisierst?
  Mit Zitat antworten Zitat
Benutzerbild von borncrush
borncrush

Registriert seit: 18. Dez 2005
Ort: Berlin
115 Beiträge
 
Delphi XE7 Enterprise
 
#5

AW: TComboBox: Mauszeiger verschwindet

  Alt 7. Nov 2012, 18:15
Ob das nun was damit zu tun hat, bleibt offen , 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 ?!?!?!
Delphi programming
  Mit Zitat antworten Zitat
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: TComboBox: Mauszeiger verschwindet

  Alt 8. Nov 2012, 09:05
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 PostMessage verschwindet der Mauszeiger. Schick ich die Message dagegen mit SendMessage , bleibt der Mauszeiger erhalten.

Im KeyPress der Combobox schicke ich mir eine Message mit PostMessage um die Filterung durchzuführen und da drin habe ich dann mit PostMessage(ComboBox.Handle, CB_SHOWDROPDOWN, 1, 0) und SendMessage(ComboBox.Handle, CB_SHOWDROPDOWN, 1, 0) probiert, das Aufklappen zu steuern.
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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