Draw a grid in a "ContainerGadget"
- netmaestro
- PureBasic Bullfrog

- Posts: 8452
- Joined: Wed Jul 06, 2005 5:42 am
- Location: Fort Nelson, BC, Canada
Re: Draw a grid in a "ContainerGadget"
Actually, PureBasic is all Fred's fault! It's worth a feature request imho. In the meantime changing the class name after creation isn't too easy iirc.
BERESHEIT
-
Little John
- Addict

- Posts: 4812
- Joined: Thu Jun 07, 2007 3:25 pm
- Location: Berlin, Germany
Re: Draw a grid in a "ContainerGadget"
netmaestro wrote:Actually, PureBasic is all Fred's fault!
Re: Draw a grid in a "ContainerGadget"
Means there is no solution to this for me.
How to add gadgets to winapi container?
How to add gadgets to winapi container?
Code: Select all
CreateImage(0,300,200,24,$FFFFFF)
StartDrawing(ImageOutput(0))
For X = 10 To 300 Step 20
For Y = 10 To 200 Step 20
Line(0,Y,300,1,$C0C0C2)
Line(X,0,1,200,$C0C0C2)
Next
Next
StopDrawing()
Procedure ApiContainer(gadgetnumber, X, Y, w, h, Flag)
dwExStyle = Flag;
dwStyle = #WS_CHILD|#WS_VISIBLE|#SS_CENTER|#SS_CENTERIMAGE;|#SS_SUNKEN;
hwndOwner = UseGadgetList(0)
hInstance = GetModuleHandle_(0)
apiContainer = CreateWindowEx_(dwExStyle, "STATIC", "Panel 1", dwStyle, X, Y, w, h, hwndOwner, #Null, hInstance, #Null);
;apiContainer = CreateWindowEx_(#WS_EX_CONTROLPARENT, "static", "", #WS_CHILD|#WS_VISIBLE|#BS_GROUPBOX, X, Y, w, h, UseGadgetList(0), gadgetnumber, GetModuleHandle_(0), 0)
SendMessage_(apiContainer, #WM_SETFONT, GetStockObject_(#DEFAULT_GUI_FONT), 0)
ProcedureReturn apiContainer
EndProcedure
OpenWindow(0,0,0,640,480,"", #PB_Window_SystemMenu|#PB_Window_SizeGadget| #PB_Window_ScreenCentered)
SetWindowColor(0, #White)
ContainerGadget(1, 10,10,300,200,#PB_Container_Flat)
StringGadget(2,10,10,100,20,"")
ButtonGadget(3,120,10,50,20,"OK")
ContainerGadget(22,10,50,100,100,#PB_Container_Flat)
CloseGadgetList()
CloseGadgetList()
ApiContainer(11, 320,10,300,200,#PB_Container_Flat)
;ContainerGadget(11, 320,10,300,200,#PB_Container_Flat)
StringGadget(12,10,10,100,20,"")
TextGadget(13,120,10,50,20,"OK")
;CloseGadgetList()
SetClassLongPtr_(GadgetID(1),#GCL_HBRBACKGROUND, CreatePatternBrush_(ImageID(0)))
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindowRe: Draw a grid in a "ContainerGadget"
Tested PB 5.42 x86 windows 10 x64
#1 :
#2 : Much better than #1
#3 :
You can use Container created with API
#1 :
Code: Select all
CreateImage(0,300,200,24,$FFFFFF)
StartDrawing(ImageOutput(0))
For X = 10 To 300 Step 20
For Y = 10 To 200 Step 20
Line(0,Y,300,1,$C0C0C2)
Line(X,0,1,200,$C0C0C2)
Next
Next
StopDrawing()
OpenWindow(0,0,0,640,480,"", #PB_Window_SystemMenu|#PB_Window_SizeGadget| #PB_Window_ScreenCentered)
ContainerGadget(1, 10,10,300,200,#PB_Container_Flat)
StringGadget(2,10,10,100,20,"")
ButtonGadget(3,120,10,50,20,"OK")
ContainerGadget(22,10,50,100,100,#PB_Container_Flat)
ButtonGadget(23,10,10,50,20,"OK")
CloseGadgetList()
CloseGadgetList()
SetGadgetColor(22,#PB_Gadget_BackColor,#White)
ContainerGadget(11, 320,10,300,200,#PB_Container_Flat)
StringGadget(12,10,10,100,20,"")
ButtonGadget(13,120,10,50,20,"OK")
CloseGadgetList()
SetGadgetColor(11,#PB_Gadget_BackColor,#Yellow)
SetClassLongPtr_(GadgetID(1),#GCL_HBRBACKGROUND, CreatePatternBrush_(ImageID(0)))
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
Code: Select all
CreateImage(0,300,200,24,$FFFFFF)
StartDrawing(ImageOutput(0))
For X = 10 To 300 Step 20
For Y = 10 To 200 Step 20
Line(0,Y,300,1,$C0C0C2)
Line(X,0,1,200,$C0C0C2)
Next
Next
StopDrawing()
CreateImage(10,300,200,24,$A7FFAE)
CreateImage(20,100,100,24,$A7FBFE)
OpenWindow(0,0,0,640,480,"", #PB_Window_SystemMenu|#PB_Window_SizeGadget| #PB_Window_ScreenCentered)
ImageGadget(0,10,10,300,200,ImageID(0))
DisableGadget(0,1)
ContainerGadget(1, 10,10,300,200,#PB_Container_Flat)
StringGadget(2,10,10,100,20,"")
ButtonGadget(3,120,10,50,20,"OK")
ImageGadget(20,10,50,100,100,ImageID(20))
DisableGadget(20,1)
ContainerGadget(22,10,50,100,100,#PB_Container_Flat)
ButtonGadget(23,10,10,50,20,"OK")
CloseGadgetList()
CloseGadgetList()
ImageGadget(10,320,10,300,200,ImageID(10))
DisableGadget(10,1)
ContainerGadget(11, 320,10,300,200,#PB_Container_Flat)
StringGadget(12,10,10,100,20,"")
ButtonGadget(13,120,10,50,20,"OK")
CloseGadgetList()
SetClassLongPtr_(GadgetID(1),#GCL_HBRBACKGROUND, GetStockObject_(#NULL_BRUSH))
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
You can use Container created with API
Egypt my love
Re: Draw a grid in a "ContainerGadget"
The first option works very well I just can not save.
Because I had to, for each сontainer, set a different image and it does not work. Here is an example
I think the third option would be the best but that I could not get the example I gave above.

Because I had to, for each сontainer, set a different image and it does not work. Here is an example
Code: Select all
CreateImage(0,300,200,24,$FFFFFF)
StartDrawing(ImageOutput(0))
For X = 10 To 300 Step 20
For Y = 10 To 200 Step 20
Line(0,Y,300,1,$C0C0C2)
Line(X,0,1,200,$C0C0C2)
Next
Next
StopDrawing()
CreateImage(10,300,200,24,$FFFFFF)
StartDrawing(ImageOutput(10))
For X = 10 To 300 Step 40
For Y = 10 To 200 Step 40
Line(0,Y,300,1,$C0C0C2)
Line(X,0,1,200,$C0C0C2)
Next
Next
StopDrawing()
OpenWindow(0,0,0,640,480,"", #PB_Window_SystemMenu|#PB_Window_SizeGadget| #PB_Window_ScreenCentered)
ContainerGadget(1, 10,10,300,200,#PB_Container_Flat)
StringGadget(2,10,10,100,20,"")
ButtonGadget(3,120,10,50,20,"OK")
ContainerGadget(22,10,50,100,100,#PB_Container_Flat)
ButtonGadget(23,10,10,50,20,"OK")
CloseGadgetList()
CloseGadgetList()
ContainerGadget(11, 320,10,300,200,#PB_Container_Flat)
StringGadget(12,10,10,100,20,"")
ButtonGadget(13,120,10,50,20,"OK")
CloseGadgetList()
SetGadgetColor(1,#PB_Gadget_BackColor,GetSysColor_( #COLOR_BTNFACE ))
SetGadgetColor(11,#PB_Gadget_BackColor,#Yellow)
SetGadgetColor(22,#PB_Gadget_BackColor,#White)
SetGadgetColor(1, #PB_Gadget_BackColor, #PB_Default)
SetClassLongPtr_(GadgetID(1),#GCL_HBRBACKGROUND, CreatePatternBrush_(ImageID(0)))
SetGadgetColor(11, #PB_Gadget_BackColor, #PB_Default)
SetClassLongPtr_(GadgetID(11),#GCL_HBRBACKGROUND, CreatePatternBrush_(ImageID(10)))
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow