Code: Select all
ev = EventGadget()
SetGadgetText(ev,"hi")
SetGadgetColor(ev, #PB_Gadget_FrontColor,#White)
SetGadgetColor(ev, #PB_Gadget_BackColor,RGB(0,255,0))
Code: Select all
ev = EventGadget()
SetGadgetText(ev,"hi")
SetGadgetColor(ev, #PB_Gadget_FrontColor,#White)
SetGadgetColor(ev, #PB_Gadget_BackColor,RGB(0,255,0))
No joy.Caronte3D wrote:May be a refresh thing, try to put the SetGadgetText after SetGadgetColor
Code: Select all
Global BBrush,TBrush,pen
BBrush = CreateSolidBrush_($FF3028)
TBrush = CreateSolidBrush_($D9FEFE)
;pen = CreatePen_(#PS_SOLID, 4, $23CEFE)
Procedure WCB(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_DRAWITEM
*cb.DRAWITEMSTRUCT = lParam
id = *cb\CtlID
Select id
Case 1
SetBkMode_(*cb\hDC,#TRANSPARENT)
If *cb\itemState & #ODS_SELECTED
SelectObject_(*cb\hDC,BBrush)
SetTextColor_(*cb\hDC,$D9FEFE)
Else
SelectObject_(*cb\hDC,TBrush)
SetTextColor_(*cb\hDC,$FF3028)
EndIf
SelectObject_(*cb\hDC, pen)
Rectangle_(*cb\hDC,*cb\rcItem\left,*cb\rcItem\top,100,40)
Text$ = GetGadgetText(id)
DrawText_(*cb\hDC,@Text$,Len(Text$),*cb\rcItem,#DT_CENTER | #DT_VCENTER | #DT_WORDBREAK) ;#DT_SINGLELINE for single line
EndSelect
ProcedureReturn 0
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0,0,0,400,200,"TEST",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(1,10,150,100,40," BUTTON #1", #BS_OWNERDRAW)
SetClassLongPtr_(GadgetID(1),#GCL_STYLE, GetClassLongPtr_(GadgetID(1),#GCL_STYLE) | #CS_DBLCLKS)
LoadFont(1,"Georgia",12,#PB_Font_HighQuality|#PB_Font_Bold )
SetGadgetFont(1,FontID(1))
SetWindowCallback(@WCB())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1 : Debug "Button 0 was pressed"
EndSelect
EndSelect
Until Quit = 1
Code: Select all
Procedure MyButtonGadget(Gadget, X, Y, Width, Height, Font ,Text.s, fColor,bColor)
tex = TextGadget(#PB_Any,x,y,Width,Height,Text,#SS_CENTER| #SS_CENTERIMAGE)
SetGadgetFont(tex,FontID(font))
SetGadgetColor(tex,#PB_Gadget_BackColor,bColor)
SetGadgetColor(tex,#PB_Gadget_FrontColor,fColor)
img = Gadget+100
Width = GadgetWidth(tex)
Height = GadgetHeight(tex)
CreateImage(img, Width, Height, 24)
If img
hdc = StartDrawing(ImageOutput(img))
SendMessage_(GadgetID(tex),#WM_PRINT,hDC,#PRF_CHILDREN| #PRF_CLIENT|#PRF_NONCLIENT| #PRF_ERASEBKGND)
StopDrawing()
FreeGadget(tex)
ButtonImageGadget(Gadget, X, Y, Width, Height, ImageID(img))
EndIf
EndProcedure
LoadFont(0,"Tahoma",12)
OpenWindow (0, #PB_Ignore, #PB_Ignore, 200, 200, "Colored ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
MyButtonGadget(1, 10, 10, 80, 30, 0," Test Text ", $0000FF,$D7FEFB)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Code: Select all
Procedure MyButtonGadget(Gadget, X, Y, Width, Height, Font ,Text.s, fColor,bColor)
tex = TextGadget(#PB_Any,0,0,0,0,Text, #PB_Text_Center)
SetGadgetFont(tex,FontID(font))
Width = GadgetWidth(tex,#PB_Gadget_RequiredSize)
Height = GadgetHeight(tex,#PB_Gadget_RequiredSize)
SetGadgetColor(tex,#PB_Gadget_BackColor,bColor)
SetGadgetColor(tex,#PB_Gadget_FrontColor,fColor)
img = Gadget+100
ResizeGadget(tex,0,0,width,height)
CreateImage(img, Width, Height, 24)
If img
hdc = StartDrawing(ImageOutput(img))
SendMessage_(GadgetID(tex),#WM_PRINT,hDC,#PRF_CHILDREN| #PRF_CLIENT|#PRF_NONCLIENT| #PRF_ERASEBKGND)
StopDrawing()
FreeGadget(tex)
ButtonImageGadget(Gadget, X, Y, Width, Height, ImageID(img))
EndIf
EndProcedure
LoadFont(0,"Tahoma",12)
OpenWindow (0, #PB_Ignore, #PB_Ignore, 200, 200, "Colored ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
MyButtonGadget(1, 10, 10, 80, 30, 0," TextGadget Center "+ #CRLF$ +" Second Line ", $0000FF,$D7FEFB)
MyButtonGadget(2, 10, 60, 80, 30, 0," Test Text " + #CRLF$ + " #2 ", $FF0000,$D7FEFB)
MyButtonGadget(3, 10, 110, 80, 30, 0," Test Text "+ #CRLF$ + " #3 ", $00FF00,$D7FEFB)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Thanks RASHAD for this great example. I especially like the fact that no callback is needed.RASHAD wrote: ↑Sat Mar 28, 2020 9:16 pm ...
Or use ButtonImageGadget() with respect to Center Hal & Val
Simple as I can#3 :Code: Select all
Procedure MyButtonGadget(Gadget, X, Y, Width, Height, Font ,Text.s, fColor,bColor) tex = TextGadget(#PB_Any,x,y,Width,Height,Text,#SS_CENTER| #SS_CENTERIMAGE) SetGadgetFont(tex,FontID(font)) SetGadgetColor(tex,#PB_Gadget_BackColor,bColor) SetGadgetColor(tex,#PB_Gadget_FrontColor,fColor) img = Gadget+100 Width = GadgetWidth(tex) Height = GadgetHeight(tex) CreateImage(img, Width, Height, 24) If img hdc = StartDrawing(ImageOutput(img)) SendMessage_(GadgetID(tex),#WM_PRINT,hDC,#PRF_CHILDREN| #PRF_CLIENT|#PRF_NONCLIENT| #PRF_ERASEBKGND) StopDrawing() FreeGadget(tex) ButtonImageGadget(Gadget, X, Y, Width, Height, ImageID(img)) EndIf EndProcedure LoadFont(0,"Tahoma",12) OpenWindow (0, #PB_Ignore, #PB_Ignore, 200, 200, "Colored ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) MyButtonGadget(1, 10, 10, 80, 30, 0," Test Text ", $0000FF,$D7FEFB) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Code: Select all
Procedure MyButtonGadget(Gadget, X, Y, Width, Height, Font ,Text.s, fColor,bColor) tex = TextGadget(#PB_Any,0,0,0,0,Text, #PB_Text_Center) SetGadgetFont(tex,FontID(font)) Width = GadgetWidth(tex,#PB_Gadget_RequiredSize) Height = GadgetHeight(tex,#PB_Gadget_RequiredSize) SetGadgetColor(tex,#PB_Gadget_BackColor,bColor) SetGadgetColor(tex,#PB_Gadget_FrontColor,fColor) img = Gadget+100 ResizeGadget(tex,0,0,width,height) CreateImage(img, Width, Height, 24) If img hdc = StartDrawing(ImageOutput(img)) SendMessage_(GadgetID(tex),#WM_PRINT,hDC,#PRF_CHILDREN| #PRF_CLIENT|#PRF_NONCLIENT| #PRF_ERASEBKGND) StopDrawing() FreeGadget(tex) ButtonImageGadget(Gadget, X, Y, Width, Height, ImageID(img)) EndIf EndProcedure LoadFont(0,"Tahoma",12) OpenWindow (0, #PB_Ignore, #PB_Ignore, 200, 200, "Colored ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) MyButtonGadget(1, 10, 10, 80, 30, 0," TextGadget Center "+ #CRLF$ +" Second Line ", $0000FF,$D7FEFB) MyButtonGadget(2, 10, 60, 80, 30, 0," Test Text " + #CRLF$ + " #2 ", $FF0000,$D7FEFB) MyButtonGadget(3, 10, 110, 80, 30, 0," Test Text "+ #CRLF$ + " #3 ", $00FF00,$D7FEFB) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Code: Select all
Procedure MyButtonGadget(Gadget, X, Y, Width, Height, Font ,Text.s, fColor,bColor)
; ContainerGadget(Gadget+200,x,y,Width,Height)
tex = TextGadget(#PB_Any,0,0,Width,Height,Text,#SS_CENTER| #SS_CENTERIMAGE)
; hrgn = CreateRoundRectRgn_(0,0,Width,Height,15,15)
; SetWindowRgn_(GadgetID(Gadget+200),hrgn,1)
; DeleteObject_(hrgn)
; CloseGadgetList()
SetGadgetFont(tex,FontID(font))
SetGadgetColor(tex,#PB_Gadget_BackColor,bColor)
SetGadgetColor(tex,#PB_Gadget_FrontColor,fColor)
img = Gadget+100
Width = GadgetWidth(tex)
Height = GadgetHeight(tex)
CreateImage(img, Width, Height, 24)
If img
hdc = StartDrawing(ImageOutput(img))
SendMessage_(GadgetID(tex),#WM_PRINT,hDC,#PRF_CHILDREN| #PRF_CLIENT|#PRF_NONCLIENT| #PRF_ERASEBKGND)
StopDrawing()
FreeGadget(tex)
ButtonImageGadget(Gadget, X, Y, Width, Height, ImageID(img))
SetWindowTheme_(GadgetID(Gadget),"","SCROLLBAR")
EndIf
EndProcedure
LoadFont(0,"Arial",14)
OpenWindow (0, #PB_Ignore, #PB_Ignore, 400, 200, "Colored ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
MyButtonGadget(3, 250, 50, 100, 42, 0," Stop " , $F3F3F3, $6570A5)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Code: Select all
OpenWindow(0, 0, 0, 200, 200, "ButtonImage",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;LoadImage(0, "g:\mmedia\pictures\girl24.bmp")
LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
LoadFont(0, "Times New Roman", 16,#PB_Font_Bold )
ResizeImage(0, 150, 150)
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(0))
FrontColor(0)
DrawText(15, 60, "Click Me",$0000FF)
DrawingMode(#PB_2DDrawing_Outlined)
StopDrawing()
CopyImage(0,1)
StartDrawing(ImageOutput(1))
;Box(0,0,150,150,#Blue);GetSysColor_(#COLOR_BTNFACE))
Circle(72,72,35,#White)
DrawAlphaImage(ImageID(0),0,0,200)
StopDrawing()
CanvasGadget(1, 10,10, 150, 150,#PB_Canvas_Border)
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(0))
Egn = CreateEllipticRgn_(12,12, 137,137)
SetWindowRgn_(GadgetID(1),Egn,1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_MouseEnter
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1))
Case #PB_EventType_MouseLeave
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(0))
Case #PB_EventType_LeftButtonDown
ResizeGadget(1,12,12,137,137)
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1))
Case #PB_EventType_LeftButtonUp
ResizeGadget(1,10,10,137,137)
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1))
EndSelect
EndSelect
EndSelect
Until Quit = 1
Great example; thanks a lot!RASHAD wrote: ↑Tue Jul 05, 2022 1:28 pm Hi
Circular Button as exampleCode: Select all
OpenWindow(0, 0, 0, 200, 200, "ButtonImage",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) ;LoadImage(0, "g:\mmedia\pictures\girl24.bmp") LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp") LoadFont(0, "Times New Roman", 16,#PB_Font_Bold ) ResizeImage(0, 150, 150) StartDrawing(ImageOutput(0)) DrawingMode(#PB_2DDrawing_Transparent) DrawingFont(FontID(0)) FrontColor(0) DrawText(15, 60, "Click Me",$0000FF) DrawingMode(#PB_2DDrawing_Outlined) StopDrawing() CopyImage(0,1) StartDrawing(ImageOutput(1)) ;Box(0,0,150,150,#Blue);GetSysColor_(#COLOR_BTNFACE)) Circle(72,72,35,#White) DrawAlphaImage(ImageID(0),0,0,200) StopDrawing() CanvasGadget(1, 10,10, 150, 150,#PB_Canvas_Border) SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(0)) Egn = CreateEllipticRgn_(12,12, 137,137) SetWindowRgn_(GadgetID(1),Egn,1) Repeat Select WaitWindowEvent() Case #PB_Event_CloseWindow Quit = 1 Case #PB_Event_Gadget Select EventGadget() Case 1 Select EventType() Case #PB_EventType_MouseEnter SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1)) Case #PB_EventType_MouseLeave SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(0)) Case #PB_EventType_LeftButtonDown ResizeGadget(1,12,12,137,137) SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1)) Case #PB_EventType_LeftButtonUp ResizeGadget(1,10,10,137,137) SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1)) EndSelect EndSelect EndSelect Until Quit = 1