Seite 1 von 1

In ScrollAreaGadget() zu Position 0,0 springen

Verfasst: 18.07.2005 15:17
von Delle
Geht das? Finde bei den Gadgets nichts dazu... bleibt wohl nur WinAPI übrig, falls überhaupt? Oder das ScrollAreaGadget einfach nochmal neu zeichnen?

Verfasst: 18.07.2005 16:36
von Ynnus
Vielleicht hilft dir das hier weiter:

Code: Alles auswählen

int SetScrollPos(

    HWND hWnd,	// handle of window with scroll bar
    int nBar,	// scroll bar flag
    int nPos,	// new position of scroll box
    BOOL bRedraw 	// redraw flag
   );
Sieht dann so in PB aus:

Code: Alles auswählen

SetScrollPos_(gadgetid(#gadget), #SB_VERT, 0, #true)
SetScrollPos_(gadgetid(#gadget), #SB_HORZ, 0, #true)
Wenn die Konstante #true nicht bekannt ist nimm dafür einfach den Wert 1.

so lässt es sich normalerweise bei Fenstern anwenden, die eine Scrollleiste haben. Wie das mit dem ScrollareaGagdet aussieht weiß ich nicht. Das ist ja ein zusammengesetztes Gadget aus mehreren Fenstern. Musst du ausprobieren. ;)

Verfasst: 18.07.2005 16:56
von Delle
Geht leider nicht, schon probiert :-)

Hier die Lösung:
Structure PB_ScrollAreaData
ScrollAreaChild.l
ScrollStep.l
EndStructure

Procedure ScrollScrollArea(gadget, xoffset, yoffset, redraw.b)
hScrollArea = GadgetID(gadget)
*SAGdata.PB_ScrollAreaData = GetWindowLong_(hScrollArea, #GWL_USERDATA)
If *SAGdata
posX = GetScrollPos_(hScrollArea, #SB_HORZ)
posY = GetScrollPos_(hScrollArea, #SB_VERT)
SetScrollPos_(hScrollArea, #SB_HORZ, posX + xoffset, #True)
SetScrollPos_(hScrollArea, #SB_VERT, posY + yoffset, #True)
posX = GetScrollPos_(hScrollArea, #SB_HORZ)
posY = GetScrollPos_(hScrollArea, #SB_VERT)
GetWindowRect_(*SAGdata\ScrollAreaChild, wr.RECT)
MoveWindow_(*SAGdata\ScrollAreaChild, -posX, -posY, wr\Right - wr\Left, wr\Bottom - wr\Top, #True)
If redraw
UpdateWindow_(GadgetID(4646))
EndIf
EndIf
EndProcedure
Fett markierte Stelle: Angabe des 1. Gadgets im ScrollAreaGadget.

Aufruf zum Hochspringen (fette Stelle Gesamtlänge):
ScrollScrollArea(#GadgetID,0,-27640,true)
Aufruf zum Runterspringen (fette Stelle Gesamtlänge):
ScrollScrollArea(#GadgetID,0,27640,true)