Hello!
How to sync two ScrollAreaGadgets horizontally?
Thanks
Best regards
Incaroad
Sync two ScrollAreaGadgets
Re: Sync two ScrollAreaGadgets
Hi incaroad
Sync 2 ScrollAreaGadgets Hal & Val
# 1:
# 2:
Sync 2 ScrollAreaGadgets Hal & Val
# 1:
Code: Select all
Global activeflag
Procedure syncCB()
If activeflag = 1
x_0 = GetGadgetAttribute(0, #PB_ScrollArea_X)
y_0 = GetGadgetAttribute(0, #PB_ScrollArea_Y)
SetGadgetAttribute(10, #PB_ScrollArea_X,x_0)
SetGadgetAttribute(10, #PB_ScrollArea_Y,y_0)
ElseIf activeflag = 10
x_10 = GetGadgetAttribute(10, #PB_ScrollArea_X)
y_10 = GetGadgetAttribute(10, #PB_ScrollArea_Y)
SetGadgetAttribute(0, #PB_ScrollArea_X,x_10)
SetGadgetAttribute(0, #PB_ScrollArea_Y,y_10)
EndIf
EndProcedure
LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
imgw = ImageWidth(0)
imgh = ImageHeight(0)
OpenWindow(0, 0, 0, 500, 430,"Sync 2 ScrollArea", #PB_Window_SystemMenu|#PB_Window_ScreenCentered |#PB_Window_SizeGadget)
ScrollAreaGadget(0, 10, 10, 480,200, 2000, 2000, 1, #PB_ScrollArea_Flat|#PB_ScrollArea_Center)
CanvasGadget(1, 10,10,imgw,imgh)
StartDrawing(CanvasOutput(1))
DrawImage(ImageID(0),0,0)
StopDrawing()
CloseGadgetList()
ScrollAreaGadget(10, 10, 220, 480,200, 2000, 2000, 1, #PB_ScrollArea_Flat|#PB_ScrollArea_Center)
CanvasGadget(11,10,10,imgw,imgh)
StartDrawing(CanvasOutput(11))
DrawImage(ImageID(0),0,0)
StopDrawing()
CloseGadgetList()
BindGadgetEvent(0,@syncCB())
BindGadgetEvent(10,@syncCB())
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
Quit = 1
Case #WM_NCMOUSEMOVE
x = DesktopMouseX()
y = DesktopMouseY()
If WindowFromPoint_( y << 32+x) = GadgetID(0)
activeflag = 1
ElseIf WindowFromPoint_( y << 32+x) = GadgetID(10)
activeflag = 10
EndIf
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
Until Quit = 1
End
Code: Select all
Global activeflag
Procedure IsMouseOver(hWnd)
GetWindowRect_(hWnd,r.RECT)
GetCursorPos_(p.POINT)
Result = PtInRect_(r,p\y << 32 + p\x)
ProcedureReturn Result
EndProcedure
Procedure syncCB()
If activeflag = 1
x_0 = GetGadgetAttribute(0, #PB_ScrollArea_X)
y_0 = GetGadgetAttribute(0, #PB_ScrollArea_Y)
SetGadgetAttribute(10, #PB_ScrollArea_X,x_0)
SetGadgetAttribute(10, #PB_ScrollArea_Y,y_0)
ElseIf activeflag = 10
x_10 = GetGadgetAttribute(10, #PB_ScrollArea_X)
y_10 = GetGadgetAttribute(10, #PB_ScrollArea_Y)
SetGadgetAttribute(0, #PB_ScrollArea_X,x_10)
SetGadgetAttribute(0, #PB_ScrollArea_Y,y_10)
EndIf
EndProcedure
LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
imgw = ImageWidth(0)
imgh = ImageHeight(0)
OpenWindow(0, 0, 0, 500, 430,"Center ScrollArea", #PB_Window_SystemMenu|#PB_Window_ScreenCentered |#PB_Window_SizeGadget)
ScrollAreaGadget(0, 10, 10, 480,200, 2000, 2000, 1, #PB_ScrollArea_Flat|#PB_ScrollArea_Center)
CanvasGadget(1, 10,10,imgw,imgh)
StartDrawing(CanvasOutput(1))
DrawImage(ImageID(0),0,0)
StopDrawing()
CloseGadgetList()
ScrollAreaGadget(10, 10, 220, 480,200, 2000, 2000, 1, #PB_ScrollArea_Flat|#PB_ScrollArea_Center)
CanvasGadget(11,10,10,imgw,imgh)
StartDrawing(CanvasOutput(11))
DrawImage(ImageID(0),0,0)
StopDrawing()
CloseGadgetList()
BindGadgetEvent(0,@syncCB())
BindGadgetEvent(10,@syncCB())
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
Quit = 1
Case #WM_NCMOUSEMOVE
If IsMouseOver(GadgetID(0))
activeflag = 1
ElseIf IsMouseOver(GadgetID(10))
activeflag = 10
EndIf
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
Until Quit = 1
End
Egypt my love
Re: Sync two ScrollAreaGadgets
and so it is impossible?
Code: Select all
Procedure syncCB()
x_0 = GetGadgetAttribute(EventGadget(), #PB_ScrollArea_X)
y_0 = GetGadgetAttribute(EventGadget(), #PB_ScrollArea_Y)
If EventGadget() = 0
SetGadgetAttribute(10, #PB_ScrollArea_X,x_0)
SetGadgetAttribute(10, #PB_ScrollArea_Y,y_0)
ElseIf EventGadget() = 10
SetGadgetAttribute(0, #PB_ScrollArea_X,x_0)
SetGadgetAttribute(0, #PB_ScrollArea_Y,y_0)
EndIf
EndProcedure
LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
imgw = ImageWidth(0)
imgh = ImageHeight(0)
OpenWindow(0, 0, 0, 500, 430,"Sync 2 ScrollArea", #PB_Window_SystemMenu|#PB_Window_ScreenCentered |#PB_Window_SizeGadget)
ScrollAreaGadget(0, 10, 10, 480,200, 2000, 2000, 1, #PB_ScrollArea_Flat|#PB_ScrollArea_Center)
CanvasGadget(1, 10,10,imgw,imgh)
StartDrawing(CanvasOutput(1))
DrawImage(ImageID(0),0,0)
StopDrawing()
CloseGadgetList()
ScrollAreaGadget(10, 10, 220, 480,200, 2000, 2000, 1, #PB_ScrollArea_Flat|#PB_ScrollArea_Center)
CanvasGadget(11,10,10,imgw,imgh)
StartDrawing(CanvasOutput(11))
DrawImage(ImageID(0),0,0)
StopDrawing()
CloseGadgetList()
BindGadgetEvent(0,@syncCB())
BindGadgetEvent(10,@syncCB())
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
Until Quit = 1
End
Re: Sync two ScrollAreaGadgets
Wow mestnyi!
You are great. So simply, I didn't even try.
Thanks for that!
You are great. So simply, I didn't even try.
Thanks for that!