Scrollen in Dialog
-
Hallo,
mich beschäftigt schon lange das Problem das ich es nicht schaffe in einem Dialog zu scrollen.
Mein Problem:
Ich habe ca 30 Eingabefelder und nebendran Buttons. Alle Elemente sind schon auf dem Dialog werden also nicht zur Laufzeit erstellt. Mein Dialogfenster ist zu klein, um alle Elemente auf einmal anzuzeigen. Ich würde nun gerne durch die Elemente scrollen. Ich zeige 10 Eingabefelder mit zugehörigen Buttons auf einmal an. Wird nun auf den Scrollbalken geklickt soll die 1. Zeile oben ausgebelendet und die 11. Zeile unten eingebelendet werden.Theoretisch könnte ich 10 Zeilen anzeigen und die restlichen Elemente ausblenden. Wird nun gescrollt, verschiebe ich die oberste Zeile weg und blende die Elemente aus. Gleichzeitig schiebe ich die Elemente der 11. Zeile unten in Position und blende sie ein. Das alles kommt mir aber sehr aufwendig vor. Hat jemand vielleicht eine einfachere Lösung oder muss ich so einen Aufwand betreiben?
-
Mir fällt da auch kein einfacher Weg ein, aber z.B. CFormView in der MFC scrollt die Elemente eines Forms ( Dialogresource ) mit ScrollWindow, da abgeleitet von CScrollView, wenn die Dialogresource grösser ist als der sichtbare Bereich. Vielleicht findest du im Source von CFormView / CScrollView einen Hinweis.
Die Funktion ScrollWindowEx( ,,,,,,, SW_SCROLLCHILDREN ) verschiebt alle Kindfenster des zu scrollenden Fensters mit und wenn die Kindfenster aus dem Clientbereich des zu scrollenden Fensters austreten, dann werden sie ja sowieso unsichtbar ( Clipping ). Fensterpositionen können auch negativ sein, dann ists halt ausserhalb des sichtbaren Bereichs.
-
ScrollWindowEx kannte ich bis jetzt nicht, vielleicht krieg ich es mit dieser Funktion hin. Ich danke dir