Restored from previous forum. Originally posted by richard.
hi,
using an example from purebasic, i wanted to display the controls correctly after a resize is done to the window.
is there a way to do the same ting without rebuilding everything?
way don't the bitmaps display anymore in the tree and list gadget?
;
; ------------------------------------------------------------
;
; PureBasic - Gadget example file
;
; (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;
; NOTE: This file doesn't compile with the demo version !
InitGadget(30) ; 31 Gadgets maximum (0 is included)
#WindowWidth = 450
#WindowHeight = 315
h=#WindowHeight
w=#WindowWidth
; Load our images..
;
LoadImage(0, "Data\Drive.bmp")
LoadImage(1, "Data\File.bmp")
LoadImage(2, "Data\PureBasic.bmp")
If OpenWindow(0, 100, 120, 450, 315, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget , "PureBasic - Advanced Gadget Demonstration")
If CreateGadgetList(WindowID())
ProgressBarGadget(3, 10, #WindowHeight-45, #WindowWidth-25, 20, 0, 100)
; Update the ProgressBar, just for fun !
;
For k=0 To 100
SetGadgetState(3, k)
Delay(10)
Next
Gosub buildWindows
EndIf
SetGadgetText(4, "Initialize Ok... Welcome !")
Repeat
Repeat
EventID.l = WaitWindowEvent()
Until EventID 0
If EventID = #PB_EventGadget
Select EventGadgetID()
Case 1
MessageRequester("Information", "You did it !", 0)
; resize window by dragging lower right corner
Case 2
SetGadgetText(4, "Tree Gadget. Item selected: "+Str(GetGadgetState(2)))
Case 5
SetGadgetText(4, "ListIcon Gadget. Item selected: "+Str(GetGadgetState(5)))
EndSelect
EndIf
If EventID = #PB_EventRepaint ; If the user has resized the window or anything, we will repaint our graphic
hnew=WindowHeight()
wnew=WindowWidth()
If (h hnew) Or (w wnew)
h=hnew
w=wnew
Gosub buildWindows
EndIf
EndIf
Until EventID = #PB_EventCloseWindow
EndIf
End
buildWindows:
h=WindowHeight()
w=WindowWidth()
CloseWindow(0)
OpenWindow(0, 100, 120, w, h, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget , "PureBasic - Advanced Gadget Demonstration")
CreateGadgetList(WindowID())
ImageGadget (0, 200, 5, 0, 0, UseImage(2))
ButtonImageGadget(1, w-66, 5, 50, 36, LoadIcon_(0, #IDI_WINLOGO))
TextGadget(4, 10, 16, 180, 24, "Please wait while initializing...")
ListIconGadget(5, 170, 50, 265, h-115, "Column 1", 100)
AddGadgetColumn(5, 1, "Column 2", 61)
AddGadgetColumn(5, 2, "Column 3", 80)
For k=0 To 100
AddListIconGadgetItem(5, k, "xxxxxxxElement "+Str(k)+Chr(10)+"Cxxxxxxxxxxxxxxx 2"+Chr(10)+"Comment 3", UseImage(0))
Next
TreeGadget (2, 10, 50, 110, h-115)
AddTreeGadgetItem(2, "General ", UseImage(1))
For k=0 To 10
AddTreeGadgetItem(2, "Hardware"+Str(k), UseImage(0))
OpenTreeGadgetNode()
AddTreeGadgetItem(2, "640*480", UseImage(1))
AddTreeGadgetItem(2, "800*600", UseImage(1))
AddTreeGadgetItem(2, "1024*768", UseImage(1))
AddTreeGadgetItem(2, "1600*1200", UseImage(1))
AddTreeGadgetItem(2, "ScreenMode", UseImage(0))
AddTreeGadgetItem(2, "Joystick", UseImage(1))
CloseTreeGadgetNode()
Next
AddTreeGadgetItem(2, "General "+Str(k), UseImage(1))
Return
resizing controls - refresh
-
- PureBasic Guru
- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm
Restored from previous forum. Originally posted by Cantor.
I changed the code a little bit:
- The window has no longer to be closed and reopened to changed sizes
of gadgets.
- The sizes of gadgets fit better to the sizes of the window.
But: Why does it work only when the window gets greater? If you size
the window smaller, the refresh doesn't work, only if you activate a different window and reactivate your program window. Strange.
Program code:
InitGadget(30) ; 31 Gadgets maximum (0 is included)
#WindowWidth = 450
#WindowHeight = 315
h=#WindowHeight
w=#WindowWidth
; Load our images..
;
LoadImage(0, "Data\Drive.bmp")
LoadImage(1, "Data\File.bmp")
LoadImage(2, "Data\PureBasic.bmp")
If OpenWindow(0, 100, 120, 450, 315, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget , "PureBasic - Advanced Gadget Demonstration")
If CreateGadgetList(WindowID())
ProgressBarGadget(3, 10, #WindowHeight-45, #WindowWidth-25, 20, 0, 100)
; Update the ProgressBar, just for fun !
;
For k=0 To 100
SetGadgetState(3, k)
Delay(10)
Next
Gosub setgadgets
EndIf
SetGadgetText(4, "Initialize Ok... Welcome !")
Repeat
Repeat
EventID.l = WaitWindowEvent()
Until EventID 0
If EventID = #PB_EventGadget
Select EventGadgetID()
Case 1
MessageRequester("Information", "You did it !", 0)
; resize window by dragging lower right corner
Case 2
SetGadgetText(4, "Tree Gadget. Item selected: "+Str(GetGadgetState(2)))
Case 5
SetGadgetText(4, "ListIcon Gadget. Item selected: "+Str(GetGadgetState(5)))
EndSelect
EndIf
If EventID = #PB_EventRepaint ; If the user has resized the window or anything, we will repaint our graphic
hnew=WindowHeight()
wnew=WindowWidth()
If (h hnew) Or (w wnew)
h=hnew
w=wnew
For i=0 To 5:
freegadget(i)
Next
Gosub setgadgets
EndIf
EndIf
Until EventID = #PB_EventCloseWindow
EndIf
End
buildWindows:
h=WindowHeight()
w=WindowWidth()
CloseWindow(0)
OpenWindow(0, 100, 120, w, h, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget , "PureBasic - Advanced Gadget Demonstration")
CreateGadgetList(WindowID())
setgadgets:
ImageGadget (0, 200, 5, 0, 0, UseImage(2))
ButtonImageGadget(1, w-66, 5, 50, 36, LoadIcon_(0, #IDI_WINLOGO))
TextGadget(4, 10, 16, 180, 24, "Please wait while initializing...")
ListIconGadget(5, w/3+30, 50, w-w/3-50, h-115, "Column 1", 100)
AddGadgetColumn(5, 1, "Column 2", 61)
AddGadgetColumn(5, 2, "Column 3", 80)
For k=0 To 100
AddListIconGadgetItem(5, k, "xxxxxxxElement "+Str(k)+Chr(10)+"Cxxxxxxxxxxxxxxx 2"+Chr(10)+"Comment 3", UseImage(0))
Next
TreeGadget (2, 10, 50, w/3, h-115)
AddTreeGadgetItem(2, "General ", UseImage(1))
For k=0 To 10
AddTreeGadgetItem(2, "Hardware"+Str(k), UseImage(0))
OpenTreeGadgetNode()
AddTreeGadgetItem(2, "640*480", UseImage(1))
AddTreeGadgetItem(2, "800*600", UseImage(1))
AddTreeGadgetItem(2, "1024*768", UseImage(1))
AddTreeGadgetItem(2, "1600*1200", UseImage(1))
AddTreeGadgetItem(2, "ScreenMode", UseImage(0))
AddTreeGadgetItem(2, "Joystick", UseImage(1))
CloseTreeGadgetNode()
Next
AddTreeGadgetItem(2, "General "+Str(k), UseImage(1))
Return
--
Best regards,
Martin
I changed the code a little bit:
- The window has no longer to be closed and reopened to changed sizes
of gadgets.
- The sizes of gadgets fit better to the sizes of the window.
But: Why does it work only when the window gets greater? If you size
the window smaller, the refresh doesn't work, only if you activate a different window and reactivate your program window. Strange.
Program code:
InitGadget(30) ; 31 Gadgets maximum (0 is included)
#WindowWidth = 450
#WindowHeight = 315
h=#WindowHeight
w=#WindowWidth
; Load our images..
;
LoadImage(0, "Data\Drive.bmp")
LoadImage(1, "Data\File.bmp")
LoadImage(2, "Data\PureBasic.bmp")
If OpenWindow(0, 100, 120, 450, 315, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget , "PureBasic - Advanced Gadget Demonstration")
If CreateGadgetList(WindowID())
ProgressBarGadget(3, 10, #WindowHeight-45, #WindowWidth-25, 20, 0, 100)
; Update the ProgressBar, just for fun !
;
For k=0 To 100
SetGadgetState(3, k)
Delay(10)
Next
Gosub setgadgets
EndIf
SetGadgetText(4, "Initialize Ok... Welcome !")
Repeat
Repeat
EventID.l = WaitWindowEvent()
Until EventID 0
If EventID = #PB_EventGadget
Select EventGadgetID()
Case 1
MessageRequester("Information", "You did it !", 0)
; resize window by dragging lower right corner
Case 2
SetGadgetText(4, "Tree Gadget. Item selected: "+Str(GetGadgetState(2)))
Case 5
SetGadgetText(4, "ListIcon Gadget. Item selected: "+Str(GetGadgetState(5)))
EndSelect
EndIf
If EventID = #PB_EventRepaint ; If the user has resized the window or anything, we will repaint our graphic
hnew=WindowHeight()
wnew=WindowWidth()
If (h hnew) Or (w wnew)
h=hnew
w=wnew
For i=0 To 5:
freegadget(i)
Next
Gosub setgadgets
EndIf
EndIf
Until EventID = #PB_EventCloseWindow
EndIf
End
buildWindows:
h=WindowHeight()
w=WindowWidth()
CloseWindow(0)
OpenWindow(0, 100, 120, w, h, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget , "PureBasic - Advanced Gadget Demonstration")
CreateGadgetList(WindowID())
setgadgets:
ImageGadget (0, 200, 5, 0, 0, UseImage(2))
ButtonImageGadget(1, w-66, 5, 50, 36, LoadIcon_(0, #IDI_WINLOGO))
TextGadget(4, 10, 16, 180, 24, "Please wait while initializing...")
ListIconGadget(5, w/3+30, 50, w-w/3-50, h-115, "Column 1", 100)
AddGadgetColumn(5, 1, "Column 2", 61)
AddGadgetColumn(5, 2, "Column 3", 80)
For k=0 To 100
AddListIconGadgetItem(5, k, "xxxxxxxElement "+Str(k)+Chr(10)+"Cxxxxxxxxxxxxxxx 2"+Chr(10)+"Comment 3", UseImage(0))
Next
TreeGadget (2, 10, 50, w/3, h-115)
AddTreeGadgetItem(2, "General ", UseImage(1))
For k=0 To 10
AddTreeGadgetItem(2, "Hardware"+Str(k), UseImage(0))
OpenTreeGadgetNode()
AddTreeGadgetItem(2, "640*480", UseImage(1))
AddTreeGadgetItem(2, "800*600", UseImage(1))
AddTreeGadgetItem(2, "1024*768", UseImage(1))
AddTreeGadgetItem(2, "1600*1200", UseImage(1))
AddTreeGadgetItem(2, "ScreenMode", UseImage(0))
AddTreeGadgetItem(2, "Joystick", UseImage(1))
CloseTreeGadgetNode()
Next
AddTreeGadgetItem(2, "General "+Str(k), UseImage(1))
Return
--
Best regards,
Martin
-
- PureBasic Guru
- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm
-
- PureBasic Guru
- Posts: 16777133
- Joined: Tue Apr 22, 2003 7:42 pm