Code: Select all
;-TOP
; IsGadgetEditable by shardik, mk-soft; v1.01.0; create 12.06.2021; All OS
Procedure IsGadgetEditable(Gadget)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
CompilerIf Subsystem("QT")
ProcedureReturn Bool(qtscript("gadget(" + Gadget + ").readOnly") <> "true")
CompilerElse
ProcedureReturn gtk_editable_get_editable_(GadgetID(Gadget))
CompilerEndIf
CompilerCase #PB_OS_MacOS
ProcedureReturn CocoaMessage(0, GadgetID(Gadget), "isEditable")
CompilerCase #PB_OS_Windows
ProcedureReturn Bool(GetWindowLongPtr_(GadgetID(gadg), #GWL_STYLE) & #ES_READONLY = 0)
CompilerEndSelect
EndProcedure
; ****
Enumeration
#first
#second
#third
#fourth
#last
#button
EndEnumeration
OpenWindow(0,200,200,300,175,"IsGadgetEditable",#PB_Window_SystemMenu)
StringGadget(#first,10,10,280,20,"one")
StringGadget(#second,10,35,280,20,"two")
StringGadget(#third,10,60,280,20,"three",#PB_String_ReadOnly)
StringGadget(#fourth,10,85,280,20,"four")
StringGadget(#last,10,115,280,20,"five")
ButtonGadget(#button,10,140,280,25,"Clear all except 'three'")
Repeat
ev=WaitWindowEvent()
If ev=#PB_Event_Gadget And EventGadget()=#button
For gad=#first To #last
If IsGadgetEditable(gad)
SetGadgetText(gad, "")
EndIf
Next
EndIf
Until ev=#PB_Event_CloseWindow