Höhe einer ComboBox einstellen
-
Soviel ich weiss, passt sich die Combobox der gewählten Schriftart in der Höhe an.
-
Das gilt nur für die Aufklappsektion
-
Original erstellt von RenéG:
Das gilt nur für die AufklappsektionShice. Was mach ich denn dann? Eigene Combobox-Klasse schreiben? Hmmmm, neee!

-
Hm, du kennst doch bestimmt die PropertyBrowser wie in VC7 oder VBasic? Die Comboboxen da sind auch selbergeschrieben. Is gar net so schwer, wie man denkt.
-
Genau so ein PropertyGrid schreibe ich gerade
. Naja, habs jetzt anders gelöst. Sieht ganz passabel aus. Thx... 
-
was hast du den für eine größe in rect (höhe) angegeben ?
info siehe sonst movewindow.volker
-
@vdittrich: Das Problem ist nicht, dass ich etwas falsches bei Create oder MoveWindow angebe, sondern, dass die ComboBox sich wehrt meine gewünschte Größe anzunehmen.
-
eine combobox hat wenn man es richtig nimmt drei höhen, welche meinst du denn
-
Original erstellt von vdittrich:
eine combobox hat wenn man es richtig nimmt drei höhen, welche meinst du dennDrei? Ich kenn nur 2!
1.) ComboBox auf
2.) ComboBox zuIch meine die erste. Kann man aber nicht umsetzen weil Windows dazwischenfunkt. Die Höhe einer ComboBox im zugeklappten Zustand kann man anscheinend nicht verändern, sonst würde ich doch nicht danach fragen...
-
1. SetItemHeight(-1, 15); nur der sogenannte container
2. mit movewindow (kann auch setwindowpos sein) die aufgeklappte combobox
3. ist die differenz aus schrifthöhe zur gesetzten höhe der aufgeklappten combobox (wird im style festgelegt)volker
[ Dieser Beitrag wurde am 03.07.2003 um 16:25 Uhr von vdittrich editiert. ]
-
4.) Die Höhe des Rahmens
5.) Die Höhe des Textes
6.) ...
-
BTW: Hättest du die vorigen Posts richtig gelesen wüsstest du, dass ich nur die Größe des "Containers" umstellen will....
-
sorry beleidigen muß ich mich nicht lassen, und es wurde in deiner anfrage alles gesagt.
//pWnd ist pointer von der combobox RECT rc; pWnd->GetWindowRect(&rc); pWnd->GetParent()->ScreenToClient(&rc); //das ist deine neue höhe der aufgeklappten combobox int nHeight=60; pWnd->MoveWindow(rc.left, rc.top, rc.right-rc.left, nHeight, 1);volker
-
Ich will dich nicht beleidigen, aber du redest die ganze Zeit am Thema vorbei. Es geht nicht um die aufgeklappte Combobox, sondern um die geschlossene. Und deren Höhe lässt sich so ohne weiteres nicht mit MoveWindow verändern. Meinst du allen Ernstes ich hätte MoveWindow nicht schon lange bevor ich diesen Thread gepostet habe ausprobiert?

-
deine höhe wird definitiv mit SetItemHeight(-1, h) geändert,
aber sobald in combobox alle einträge gelöscht werden bzw. ein neuer eintrag hinzugefügt wird (wenn vorher leer war) muß nachher SetItemHeight(-1, h) neu gesetzt werden
-
Ich mache das nachdem ich die Einträge hinzufüge, aber es tut sich nichts.
-
das geht, habs probiert
((CComboBox*)pWnd)->SetItemHeight(-1, 28); //::SendMessage(pWnd->m_hWnd, CB_SETITEMHEIGHT, -1, 30);aber dannach z.b größe ändern
RECT rc; pWnd->GetWindowRect(&rc); pWnd->GetParent()->ScreenToClient(&rc); int nHeight=60; pWnd->MoveWindow(rc.left, rc.top, rc.right-rc.left, nHeight, 1);und schon ist die alte größe mit standart 15 pixel wieder hergestellt,
jetzt noch mal((CComboBox*)pWnd)->SetItemHeight(-1, 28);wieder 28 px. du wirst deine höhe irgendwo im ablauf anders setzen müssen,
kenn dein code nicht, aber bei mir wird die höhe in OnInitDialog() gesetzt und das funktioniertvolker
-
Das Problem ist: Ich will das Ding kleiner machen, weil es in ein PropertyGrid soll (wie in VS.NET). Das mag der anscheinend nicht so gerne...
Naja, werd wohl nicht darum kommen mir ne eigene ComboBox zu schreiben. Wollte mir den Aufwand eigentlich sparen, aber was solls. Thx
-
das geht schon, es ist nur eine frage wo im ablauf du die höhe der combobox setzt und was danach passiert. die nachfolgende kombination funktioniert doch.
// position ändern int x=1; int y=1; RECT rc; pWnd->GetWindowRect(&rc); pWnd->GetParent()->ScreenToClient(&rc); pWnd->MoveWindow(rc.left+x, rc.top+y, rc.right-rc.left, rc.bottom-rc.left, 1); //höhe neu setzen ((CComboBox*)pWnd)->SetItemHeight(-1, 28);und alles ist ok (nur eine frage der ablaufsteuerung) -> combobox selbst schreiben viel spaß
volker
-
Original erstellt von vdittrich:
**das geht schon, es ist nur eine frage wo im ablauf du die höhe der combobox setzt und was danach passiert. die nachfolgende kombination funktioniert doch.
**Also ich weiß nicht wie es bei dir ist. Bei mir funzt es nicht das Ding unter Standardhöhe zu schrumpfen. So mache ich es:
// ComboBox erstellen Create(WS_CHILD | WS_VSCROLL | CBS_SORT | CBS_DROPDOWNLIST, m_rcValue, static_cast<CWnd*>(m_pView), 0); SetItemHeight(-1, m_rcValue.Height());Original erstellt von vdittrich:
**-> combobox selbst schreiben viel spaß
**Ach, so schwer ist das garnicht. Eine Edit, einmal DrawFrameControl für den Button und ne popup-Liste. Naja, nicht schwer aber lästig...

[ Dieser Beitrag wurde am 04.07.2003 um 13:41 Uhr von MaSTaH editiert. ]