AGB  ·  Datenschutz  ·  Impressum  







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

Combo ausblenden?

Ein Thema von Mattze · begonnen am 21. Jun 2011 · letzter Beitrag vom 22. Jun 2011
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

Combo ausblenden?

  Alt 21. Jun 2011, 14:10
Hi,

wenn man in einer Combobox das Dropdown-Feld aufgemacht hat, bleibt es offen bis man irgendwoanders im Formular klickt.
Das funktioniert auch, wenn man irgendwohin klickt, was nicht den Focus bekommen kann.
Welches Ereignis ist dafür zuständig?
CM_Exit scheint es nicht zu machen.
(Ich möchte das bei einer anderen Sache nachmachen.)

Was ist dieses Feld eigentlich für eine Struktur? Eine Listbox?

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Combo ausblenden?

  Alt 21. Jun 2011, 17:07
Zum Schließen dient der NotifyCode CBN_CLOSEUP oder auch die Methode CloseUp, die protected ist, also von einer abgeleiteten klasse (oder mit Tricks) erreichbar ist. Das kannst du aber auch im Quelltext der TComboBox direkt sehen.

Und als Ereignis, denn das war ja was du gefragt hattest (auch wenn ich nicht sicher bin, dass du das meintest) gibt es OnCloseUp.

// EDIT:
Ach ja, und dann gibts noch CB_SHOWDROPDOWN:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: Combo ausblenden?

  Alt 21. Jun 2011, 17:32
Hi,

danke, aber nee, das meine ich doch gar nicht.
Offenbar muss ich mal wieder an meiner Formulierungsweise schrauben!

Ich möchte diese "Schließverhalten" der Listbox(?) in der Combobox nachmachen!

Genauer: Dropdown --> Listbox (oder was ist das?) geht auf und bleibt offen.
Ich klicke IRGENDWO im Formular hin, z. Bsp. auch nur auf ein Panel. (Ob das den Fokus übernehmen kann oder sonst was, ist da völlig egal!)
Listbox von der Combobox geht wieder zu.
Wie geht das?
CMExit macht es nicht. Nur manchmal - wenn der andere den Fokus nehmen kann.

Nebenbei: Genau das gleiche ist beim PopUp oder Menü. Das muss also irgendwas allgemeines sein, evtl. eben eine Botschaft.

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Combo ausblenden?

  Alt 21. Jun 2011, 22:17
Ja, das passiert genau über CBN_CLOSEUP. Das ist für Windows ein solches DropDown-Control, eben eine Combobox. Deshalb wird da via WM_COMMAND der NotifyCode CBN_CLOSEUP geschickt um es zu schließen. Ich bezweifle, dass du das adaptieren kannst ohne auch eine ComboBox zu implementieren. (Sicher bin ich da nicht, ich habe es nie versucht.)

Das siehst du in TCustomComboBox.CreateParams. Dort wird eine Klasse COMBOBOX erstellt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Combo ausblenden?

  Alt 21. Jun 2011, 22:39
Eine Combobox ist eine Kombination der Windows Edit Fensterklass eun der Listbox Fensterklasse.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Combo ausblenden?

  Alt 21. Jun 2011, 23:12
Edit Fensterklasse und ListBox Fensterklasse? Bist du sicher?

Schließlich gibt es die ComboBox Fensterklasse direkt, siehe hier in der Liste:
http://msdn.microsoft.com/en-us/libr...74.aspx#system
Und ich hätte jetzt den Quelltext in Delphi so interpretiert, dass die auch verwendet wird.
Delphi-Quellcode:
procedure TCustomComboBox.CreateParams(var Params: TCreateParams);
[...]
begin
  inherited CreateParams(Params);
  CreateSubClass(Params, 'COMBOBOX');
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Combo ausblenden?

  Alt 21. Jun 2011, 23:20
Ziemlich. Jedenfalls das Eingabefeld ist ein normales Edit. Und zusammen bilden sie die Combobox Fensterklasse.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Combo ausblenden?

  Alt 21. Jun 2011, 23:43
Ach so meinst du das, ja klar, das wird so sein.

Aber egal wie das intern in der API dann aussieht, es ist eine spezielle ComboBox Fensterklasse, die das entsprechende Verhalten von Windows bekommt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#9

AW: Combo ausblenden?

  Alt 22. Jun 2011, 10:51
Hi,

na so ein Ärger. Und damit bin ich raus...
Wenn das eine Message wäre, wäre es ja einfach. (Jedenfalls, wenn man dann noch rauskriegt, welche... )

Bis zum Subclassing usw. wollte ich es eigentlich nicht trieben.

Gruß
Mattze
  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 04:27 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