Höhe einer ComboBox einstellen
-
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. ]
-
standart inst 15 px
((CComboBox*)pWnd)->SetItemHeight(-1, 8); = 8 px funktioniert doch
Create(WS_CHILD | WS_VSCROLL | CBS_SORT | CBS_DROPDOWNLIST, m_rcValue, static_cast<CWnd*>(m_pView), 0); SetItemHeight(-1, m_rcValue.Height()); // was sollte hier geändert werden
-
Selbst wenn ich anstatt m_rcValue.Height() eine 8 da hin schreibe bleibt das Ding stur...
-
Moment mal: geht das Ding von Pixeln oder von Dialog-Units aus? Ich denke doch Pixel...
-
Selbst wenn ich anstatt m_rcValue.Height() eine 8 da hin schreibe bleibt das Ding stur...
wenn m_rcValue.Height() != 8 ist dann wird an der combobox noch irgendwas geändert, was die höhe der combobox beeinflusst.
SetItemHeight(...) wird in pixel angegeben, auch create arbeitet mit pixel.
wenn du koordinaten über die Ressource abstimmst (z.b. als konstante in dein projekt einbettest) dann arbeitet du mit logischen einheiten.
-
Original erstellt von vdittrich:
wenn m_rcValue.Height() != 8 ist dann wird an der combobox noch irgendwas geändert, was die höhe der combobox beeinflusst.Und das heißt...?
Original erstellt von vdittrich:
auch create arbeitet mit pixel.ist ja ganz was neues!

Original erstellt von vdittrich:
wenn du koordinaten über die Ressource abstimmst (z.b. als konstante in dein projekt einbettest) dann arbeitet du mit logischen einheiten.Das sind keine Konstanten, sondern die Angaben aus dem RC-File. Logische Einheiten sind Definitionssache...
-
Original erstellt von vdittrich:
auch create arbeitet mit pixel.
ist ja ganz was neues!Original erstellt von vdittrich:
wenn du koordinaten über die Ressource abstimmst (z.b. als konstante in dein projekt einbettest) dann arbeitet du mit logischen einheiten.Das sind keine Konstanten, sondern die Angaben aus dem RC-File. Logische Einheiten sind Definitionssache...
--------------------meine ausdrucksweise ist sicher nicht so gut, das man mir unbedingt folgen muß.
ich glaube dennoch, das deine anfrage bis zum erbrechen beantwortet wurde.schönes wochenende
-
Auch schönes Wochenende. Bis zum erbrechen wurde meine Frage beantwortet, das stimmt. Das ändert aber nicht an der Tatsache, dass mir keine Antwort helfen konnte
.