kostenloser Webspace werbefrei: lima-city


2 Fragen/Probleme über Scrollleisten

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    revan86

    revan86 hat kostenlosen Webspace.

    Moin!

    Meine erste Frage ist, wie ich in einem Listenfeld die horizontalen Scrolleisten aktiviere!? Habe es in den Eigenschaften versucht und den Haken in horiz. Bildlauf aktiviert, jedoch kam dort kein. Dann habe ich ein H?kchen bei Kein Bildlauf deaktivieren reingemacht, die wird dann auch angezeigt, jedoch so als wenn der Text nicht lang genug sei (deaktiviert, also grau). Die Vertikale funktioniert einwandfrei!

    Meine zweite Frage ist, wie bekomme ich es hin bei 2 Listenfeldern gleich zu scrollen? Heisst, wenn ich im einen Feld nach unten scrolle, soll er im anderen genau gleich scrollen (beide Bars sind genauso lang). Habe was von Beginscroll geh?rt, jedoch habe ich kein Windows XP :(

    Kann mir da jemand helfen?

    THX:biggrin:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 0******a

    Zu der ersten Frage (nicht erscheinender Scrollbalken):
    Aktivier "Horizontalen Bildlauf" (hast du ja bereits). Wenn die erstellte Klasse der Listbox m_ctrlList1 heisst, dann f?ge irgendwo (am besten dort, wo du die Daten in die Listbox einliest, nach der Einleseoperation) folgende Zeile ein:
    m_ctrlList1.SetHorizontalExtent(200);
    Damit legst du fest, wie weit in der Listbox gescrollt werden kann. Die Angabe 200 steht f?r 200 Pixel und du kannst sie variieren, je nach Bedarf. Am besten stellst du vorher fest, wie lang der l?ngste Datensatz in der Listbox ist und legst mit SetHorizontalExtent() dann einen entsprechenden Wert fest. Das "Kein Bildlauf deaktivieren" hat bei CListBox nur Auswirkungen auf den vertikalen Scrollbalken. Wenn du willst, das der horizontale Scrollbalken verschwindet, wenn alle Datens?tze k?rzer sind als die Listbox oder gar keine Datens?tze vorhanden sind, dann musst du das manuell mit SetHorizontalExtent(0) machen.




    Zu der zweiten Frage (alles scrollen, wenn eine Listbox gescrollt wird):
    Um das zu erreichen, musst du dir eine eigene Listbox Klasse ableiten.
    In der Headerdatei des Dialoges blablaDlg.h f?gst du folgendes ein:

    class CTest : public CListBox
    {
    public:
    ???afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar * pScrollBar);
    ???DECLARE_MESSAGE_MAP()
    };

    Das sollte auf jeden Fall vor alle anderen Klassendefinitionen. Aus den Listboxen, von denen du mitbekommen willst, wann sie vertikal gescrollt werden musst du jetzt Objekte der Klasse CTest machen. Suche dazu in der Headerdatei nach der Definition der CListBox in der Klasse, die von CDialog abgeleitet ist. Ersetze (um bei unserem alten Beispiel zu bleiben) bei m_ctrlList1 den Klassenbezeichner CListBox durch CTest.
    Wechsle jetzt in die cpp-Datei. Dort schreibst du dann nach ganz oben vor den ganezn anderen Funktiondefinitionen:
    CListBox * g_pclListBox2; (wenn du mehr Listboxen benutzt, brauchst du mehr globale Variablen).
    Im Konstruktor des Dialoges schreibst du g_pclListBox2 = &m_ctrlList2;
    Dann ans Ende der Datei gehen und schreiben:

    afx_msg void CTest::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar * pScrollBar)
    {
    ???g_pclListBox2->SendMessage(WM_VSCROLL, nSBCode, NULL);
    ???CWnd::OnVScroll(nSBCode, nPos, pScrollBar);
    }


    BEGIN_MESSAGE_MAP(CTest, CWnd)
    ???ON_WM_VSCROLL()
    END_MESSAGE_MAP()

    Mit SendMessage sendet man an die zweite Listbox die selben Daten, wie sie die erste auch empfangen hat und dementsprechend scrollt die auch genau so. Das CWnd::OnVScroll() muss auf jeden Fall in der Funktion sein, damit die erste Listbox dann auch gescrollt wird.
    Das Ganze geht auch f?r den horizontalen Scroll. Einfach ?berall dort wo VSCROLL oder VScroll steht HSCROLL oder HScroll draus machen.


    Nachtrag:
    Ich habe da auch mal eine Frage: Wozu brauchst du den M?ll ?berhaupt?!

    Beitrag ge?ndert am 10.11 18:28 von 0-checka
  4. Autor dieses Themas

    revan86

    revan86 hat kostenlosen Webspace.

    Hi,

    habe da leider einige Probleme mit, um genau zu sein 11! Beim compilieren kommen 11 Fehler, wobei alle in den Zeilen

    g_pclListBox2=&m_ctrlList2;
    und
    CListBox * g_pclListBox2;
    und
    g_pclListBox2->SendMessage(WM_VSCROLL, nSBCode, NULL);

    sind... Weisst du woran das liegen kann? Habe alles mehrmals auf Rechtschreibfehler ?berpr?ft. Danke!
  5. 0******a

    Die Fehlermeldungen des Compilers w?ren interessanter. Kopier sie mal hier rein. Nur mit den Zeilen kann man leider wenig anfangen...
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!