Code: Select all
EnableExplicit
Enumeration Window
#Window_0
EndEnumeration
Enumeration Gadgets
#String_1
#String_2
EndEnumeration
Enumeration Font
#Font
EndEnumeration
LoadFont(#Font, "Tahoma", 8, #PB_Font_Italic)
Macro _IsFlag_(StyleFlag, IsFlag)
Bool((StyleFlag & IsFlag) = IsFlag)
EndMacro
Procedure NewStringGadget(Gadget, AddFlag)
If Gadget > 9999 Or Not(IsGadget(Gadget)) Or Not(GadgetType(Gadget) = #PB_GadgetType_String) : ProcedureReturn : EndIf ; Only with a fixed constant < 10000
Protected ReturnVal
Protected StyleFlag = GetWindowLongPtr_(GadgetID(Gadget), #GWL_STYLE)
Protected ExStyleFlag = GetWindowLongPtr_(GadgetID(Gadget), #GWL_EXSTYLE)
Protected IDFont = GetGadgetFont(Gadget)
Protected BackColor = GetGadgetColor(Gadget, #PB_Gadget_BackColor)
Protected FrontColor = GetGadgetColor(Gadget, #PB_Gadget_FrontColor)
Protected MaximumLength = GetGadgetAttribute(Gadget, #PB_String_MaximumLength)
Protected IsDisable = IsWindowEnabled_(GadgetID(Gadget)) ! 1
Protected IsHiden = IsWindowVisible_(GadgetID(Gadget)) ! 1
If _IsFlag_(StyleFlag, #ES_NUMBER) : AddFlag | #PB_String_Numeric : EndIf
If _IsFlag_(StyleFlag, #ES_PASSWORD) : AddFlag | #PB_String_Password : EndIf
If _IsFlag_(StyleFlag, #ES_READONLY) : AddFlag | #PB_String_ReadOnly : EndIf
If _IsFlag_(StyleFlag, #ES_LOWERCASE) : AddFlag | #PB_String_LowerCase : EndIf
If _IsFlag_(StyleFlag, #ES_UPPERCASE) : AddFlag | #PB_String_UpperCase : EndIf
If Not(_IsFlag_(ExStyleFlag, #WS_EX_CLIENTEDGE)) : AddFlag | #PB_String_BorderLess : EndIf
; Others Edit Control Styles: https://learn.microsoft.com/en-us/windows/win32/controls/edit-control-styles
If _IsFlag_(StyleFlag, #ES_CENTER) : AddFlag | #ES_CENTER : EndIf
If _IsFlag_(StyleFlag, #ES_MULTILINE) : AddFlag | #ES_MULTILINE : EndIf
If _IsFlag_(StyleFlag, #ES_NOHIDESEL) : AddFlag | #ES_NOHIDESEL : EndIf
If _IsFlag_(StyleFlag, #ES_RIGHT) : AddFlag | #ES_RIGHT : EndIf
ReturnVal = StringGadget(Gadget, GadgetX(Gadget), GadgetY(Gadget), GadgetWidth(Gadget), GadgetHeight(Gadget), GetGadgetText(Gadget), AddFlag)
SetGadgetFont(Gadget, IDFont)
SetGadgetColor(Gadget, #PB_Gadget_BackColor, BackColor)
SetGadgetColor(Gadget, #PB_Gadget_FrontColor, FrontColor)
SetGadgetAttribute(Gadget, #PB_String_MaximumLength, MaximumLength)
DisableGadget(Gadget, IsDisable)
HideGadget(Gadget, IsHiden)
ProcedureReturn ReturnVal
EndProcedure
Procedure Open_Window_0(X = 0, Y = 0, Width = 220, Height = 130)
Protected LongText.s = "This is a MultiLine String Gadget. I would say even more, this is a MultiLine String Gadget"
If OpenWindow(#Window_0, X, Y, Width, Height, "Recreate StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(#String_1, 20, 10, 180, 50, LongText, #ES_CENTER | #ES_MULTILINE)
StringGadget(#String_2, 20, 70, 180, 50, LongText)
SetGadgetColor(#String_2, #PB_Gadget_BackColor, #Cyan) : SetGadgetColor(#String_2, #PB_Gadget_FrontColor, #Red)
SetGadgetFont(#String_2, FontID(#Font))
;DisableGadget(#String_2, #True)
EndIf
EndProcedure
Open_Window_0()
;SetWindowLongPtr_(GadgetID(#String_2), #GWL_STYLE, GetWindowLongPtr_(GadgetID(#String_2), #GWL_STYLE) #ES_CENTER | #ES_MULTILINE) ; DOES NOT WORK
NewStringGadget(#String_2, #ES_CENTER | #ES_MULTILINE)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow