Center SpinGadget Text?
Posted: Thu Aug 24, 2017 2:58 pm
I need help centering text of a spin gadget. I tried #PB_Text_Center and some Winapi codes for other gadget types but could not get it to work.
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
LoadFont(0,"Tahoma",12)
OpenWindow(0, 0, 0, 400, 300, "SpinGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SGh1 = StringGadget(1,10,10,60,24,"",#ES_CENTER|#ES_NUMBER)
SetGadgetColor(1,#PB_Gadget_BackColor,$C6FEFC)
SetGadgetColor(1,#PB_Gadget_FrontColor,$1B1BFE)
SetGadgetFont(1,FontID(0))
sph = CreateUpDownControl_(#WS_CHILD|#WS_BORDER| #WS_VISIBLE|#UDS_SETBUDDYINT|#UDS_ARROWKEYS| #UDS_ALIGNRIGHT,10,10,60,40,WindowID(0), 1, GetModuleHandle_(0),SGh1,100,0,50)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Debug Val(GetGadgetText(1))
EndSelect
EndSelect
Until Quit = 1
End
Thanks, is it possible to make it behave like a spingadget without the #PB_Spin_Numeric flag, i just need it to trigger the up/down events but not change the number on its own.RASHAD wrote:For Windows
Code: Select all
LoadFont(0,"Tahoma",12) OpenWindow(0, 0, 0, 400, 300, "SpinGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered) SGh1 = StringGadget(1,10,10,60,24,"",#ES_CENTER|#ES_NUMBER) SetGadgetColor(1,#PB_Gadget_BackColor,$C6FEFC) SetGadgetColor(1,#PB_Gadget_FrontColor,$1B1BFE) SetGadgetFont(1,FontID(0)) sph = CreateUpDownControl_(#WS_CHILD|#WS_BORDER| #WS_VISIBLE|#UDS_SETBUDDYINT|#UDS_ARROWKEYS| #UDS_ALIGNRIGHT,10,10,60,40,WindowID(0), 1, GetModuleHandle_(0),SGh1,100,0,50) Repeat Select WaitWindowEvent() Case #PB_Event_CloseWindow Quit = 1 Case #PB_Event_Gadget Select EventGadget() Case 1 Debug Val(GetGadgetText(1)) EndSelect EndSelect Until Quit = 1 End
Code: Select all
EnableExplicit
ImportC ""
gtk_entry_set_alignment(*entry.GtkEntry, xalign.f)
EndImport
; Object constants
#Win_Main = 0
#SpBG1 = 0
Global.i gEvent, gEventGadget, gEventType, gQuit
Procedure Create_WinMain()
Protected *widget.GtkHBox, *entry.GtkEntry
If OpenWindow(#Win_Main, 300, 200, 500, 200, "PB-SpinGadget text/number alignment", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (#SpBG1, 5, 5, 100, 26, 0, 10);, #PB_Spin_Numeric)
SetGadgetState(#SpBG1, 5)
SetGadgetText (#SpBG1, "5")
*widget= GadgetID(#SpBG1)
*entry = g_list_nth_data_(gtk_container_get_children_(*widget), 0)
gtk_entry_set_alignment(*entry, 0.5); 0.0= left aligned, 1.0= right aligned
EndIf
EndProcedure
Create_WinMain()
Repeat
gEvent= WaitWindowEvent()
Select gEvent
Case #PB_Event_CloseWindow
gQuit= #True
Case #PB_Event_Gadget
If EventGadget() = #SpBG1
gEventType= EventType()
If gEventType = #PB_EventType_Up
Debug "up"
ElseIf gEventType = #PB_EventType_Down
Debug "down"
EndIf
EndIf
EndSelect
Until gQuit
Code: Select all
fsize = 12
LoadFont(0,"Tahoma",fsize)
gsize = fsize*2+4
OpenWindow(0, 0, 0, 400, 300, "SpinGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ContainerGadget(0,10,10,92,gsize)
SpinGadget(1,70,0,18,gsize,0,1000)
SGh2 = StringGadget(2,2,0,68,gsize,"VOID",#ES_CENTER)
SetGadgetColor(2,#PB_Gadget_BackColor,$C6FEFC)
SetGadgetColor(2,#PB_Gadget_FrontColor,$1B1BFE)
SetGadgetFont(2,FontID(0))
CloseGadgetList()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_Up
SetGadgetText(2,"UP")
Case #PB_EventType_Down
SetGadgetText(2,"DOWN")
EndSelect
EndSelect
EndSelect
Until Quit = 1
End
Code: Select all
fsize = 12
LoadFont(0,"Tahoma",fsize)
gsize = fsize*2+4
Procedure settext(text$)
StartDrawing(WindowOutput(0))
DrawingFont(FontID(0))
twidth = TextWidth(text$)
StopDrawing()
padleft = (GadgetWidth(2)-twidth)/2
StartDrawing(CanvasOutput(2))
Box(0,0,GadgetWidth(2),GadgetHeight(2),$FFFFFF)
DrawingFont(FontID(0))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(padleft,3,text$,$1B1BFE)
StopDrawing()
EndProcedure
OpenWindow(0, 0, 0, 400, 300, "SpinGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ContainerGadget(0,10,10,92,gsize,#PB_Container_Flat)
SpinGadget(1,70,0,21,gsize,0,1000)
CanvasGadget(2,2,0,68,gsize)
StartDrawing(WindowOutput(0))
DrawingFont(FontID(0))
twidth = TextWidth("VOID")
StopDrawing()
padleft = (GadgetWidth(2)-twidth)/2
StartDrawing(CanvasOutput(2))
DrawingFont(FontID(0))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(padleft,3,"VOID",$1B1BFE)
StopDrawing()
CloseGadgetList()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_Up
settext("UP")
Case #PB_EventType_Down
settext("DOWN")
EndSelect
EndSelect
EndSelect
Until Quit = 1
End
Code: Select all
Enumeration
#Win
#Cntr
#Txt
#BtnUp
#BtnDn
#Font12R
EndEnumeration
LoadFont(#Font12R, "Arial", 12, #PB_Font_HighQuality)
Procedure Win()
;#-------------
Protected iFlags.i = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#Win, 0, 0, 300, 150, "DIY Spin Gadget", iFlags)
SetGadgetFont(#PB_All, FontID(#Font12R))
ContainerGadget(#Cntr, 50, 50, 150, 42, #PB_Container_Flat)
TextGadget(#Txt, 5, 12, 120, 30, "", #PB_Text_Center)
ButtonGadget(#BtnUp, 128, 0, 20, 20, Chr($25B2))
ButtonGadget(#BtnDn, 128, 20, 20, 20, Chr($25BC))
SetGadgetColor(#Cntr, #PB_Gadget_BackColor, RGB(255,255,255))
SetGadgetColor(#Txt, #PB_Gadget_BackColor, RGB(255,255,255))
SetGadgetColor(#Txt, #PB_Gadget_FrontColor, RGB(010,010,010))
CloseGadgetList()
EndIf
EndProcedure
Procedure Wait()
;#--------------
Protected iExit.i = #False
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow: iExit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case #BtnUp: SetGadgetText(#Txt, "UP")
Case #BtnDn: SetGadgetText(#Txt, "DOWN")
EndSelect
EndSelect
Until iExit = #True
EndProcedure
Win()
Wait()
End