horizontalen Scrollbalken aus einem CListCtrl zur Laufzeit entfernen



  • Ich habe in einem Dialogfeld ein List-Control. Werden mehr Einträge wie verfügbarer Platz eingfügt, dann erscheinen beide Scrollbalken. Ich möchte aber, dass nur der vertikale Balken erscheint. Ich hab schon verschiedenes probiert. Ich bekomme den maximal deaktiviert. Setze ich in den Eigenschaften "kein Bildlauf" auf True, dann sind beide weg und mit Hinzufügen der Eigenschaft über EnableScrollBar bzw. ModifyStyle gehts nicht. Ebenso funktioniert es nicht, wenn ich "kein Bildlauf" auf False lasse und versuche, die entsprechenden Eigenschaften zu deaktivieren.
    Kann es sein, dass ich eigens dafür eine Klasse erschaffen muss, die von vornherein diese gewünschten Eigenschaften besitzt?


  • Mod

    Setze den Report-Modus.
    Füge genau nur eine Spalte ein, die die breite des Controls hat minus Scrollbar Breite.



  • Ich habe das Control im Berichtsmodus, habe aber zwei Spalten.


  • Mod

    AndyDD schrieb:

    Ich habe das Control im Berichtsmodus, habe aber zwei Spalten.

    Dann sorge dafür, dass die beiden Spalten eben nicht breiter sind, als das Fenster minus einem Rollbalken!



  • Martin Richter schrieb:

    Dann sorge dafür, dass die beiden Spalten eben nicht breiter sind, als das Fenster minus einem Rollbalken!

    Wie breit ist denn ein Rollbalken? ich wollte eigentlich, dass beide Spalten exakt in das Fenster passen. Das geht so lange gut, wie auch Zeilen verfügbar sind. Mein Control kann 14 Zeilen aufnehmen. Ab der 15. Zeile zeichnet er mir beide Scrollbalken, obwohl der horizontale nicht notwendig wäre. Gibts da wirklich keine andere Möglichkeit??


  • Mod

    CRect rect;
    m_lcData.GetClientRect(rect); // m_lcData sollte hier noch keinen Rollbalken haben (leer sein)!
    rect.right -= ::GetSystemMetrics(SM_CXHSCROLL);
    

    rect.Width() ist nun was Du an Pixeln für die Spalten zur Verfügung hast


Anmelden zum Antworten