• SingleLineEdit ReadOnly color & textcolor

    From Grzegorz R.@21:1/5 to All on Sat Oct 16 04:14:03 2021
    Hello all..
    In certain circumstances I wanted to change color of text in SLE using: SELF:oDCsle:TextColor := Color{COLORRED}
    However if the SLE gets READONLY:=TRUE the background gets white instead of default (gray).
    How can I change/set foreground text color without affecting background independently of ReadOnly/Enable state or ...
    how can I find and remember respective background (and foreground) colors for Normal, ReadOnly and Disabled states?
    Regards
    Gregory

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Karl-Heinz@21:1/5 to All on Tue Oct 19 16:11:00 2021
    Hi Gregory,

    [...]
    In certain circumstances I wanted to change color of text in SLE
    [...]

    With the modified Readonly assign and the modified Enable()/Disable()
    methods below you can set the colors and brushes you like. If you use the
    code unchanged and Readonly is set to true or Disable() is called, the Textcolor will be green. All other background and text colors use the
    windows default colors.


    CLASS MySle INHERIT SingleLineEdit

    ASSIGN ReadOnly(lNewValue) CLASS MySle

    SUPER:ReadOnly := lNewValue

    IF SELF:ValidateControl()

    IF lNewValue
    SELF:Background := Brush { Color { GetSysColor (
    COLOR_BTNFACE ) } }
    SELF:TextColor := Color { COLORGREEN}

    // This would set the default Textcolor when Readonly is set to true
    // SELF:TextColor := Color { GetSysColor ( COLOR_WINDOWTEXT ) }

    ELSE
    SELF:Background := Brush { Color { GetSysColor (
    COLOR_WINDOW ) } }
    SELF:TextColor := Color { GetSysColor ( COLOR_WINDOWTEXT ) }
    ENDIF

    ENDIF

    RETURN lNewValue


    METHOD Enable() CLASS MySle

    // no need to call SUPER:Enable()

    IF SELF:ValidateControl()

    SELF:Setstyle ( WS_DISABLED , FALSE )

    SELF:Background := Brush { Color { GetSysColor ( COLOR_WINDOW ) } }
    SELF:TextColor := Color { GetSysColor ( COLOR_WINDOWTEXT ) }

    ENDIF


    RETURN SELF


    METHOD Disable() CLASS MySle

    // don´t call SUPER:Disable(), because afterwards you can´t change the colors !


    IF SELF:ValidateControl()

    SELF:Setstyle ( WS_DISABLED , TRUE )

    SELF:Background := Brush { Color { GetSysColor ( COLOR_BTNFACE ) } }
    SELF:TextColor := Color { COLORGREEN }

    // This would set the default disabled Textcolor
    // SELF:TextColor := Color { GetSysColor ( COLOR_GRAYTEXT ) }

    ENDIF


    RETURN SELF


    btw. implement a global system where the required colors and brushes are created only once.

    regards
    Karl-Heinz

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Grzegorz R.@21:1/5 to All on Mon Nov 15 06:55:18 2021
    wtorek, 19 października 2021 o 16:15:16 UTC+2 Karl-Heinz napisał(a):
    Hi Gregory,

    [...]
    In certain circumstances I wanted to change color of text in SLE
    [...]

    With the modified Readonly assign and the modified Enable()/Disable() methods below you can set the colors and brushes you like. If you use the code unchanged and Readonly is set to true or Disable() is called, the Textcolor will be green. All other background and text colors use the windows default colors.


    CLASS MySle INHERIT SingleLineEdit

    ASSIGN ReadOnly(lNewValue) CLASS MySle

    SUPER:ReadOnly := lNewValue

    IF SELF:ValidateControl()

    IF lNewValue
    SELF:Background := Brush { Color { GetSysColor (
    COLOR_BTNFACE ) } }
    SELF:TextColor := Color { COLORGREEN}

    // This would set the default Textcolor when Readonly is set to
    true
    // SELF:TextColor := Color { GetSysColor ( COLOR_WINDOWTEXT ) }

    ELSE
    SELF:Background := Brush { Color { GetSysColor (
    COLOR_WINDOW ) } }
    SELF:TextColor := Color { GetSysColor ( COLOR_WINDOWTEXT ) }
    ENDIF

    ENDIF

    RETURN lNewValue


    METHOD Enable() CLASS MySle

    // no need to call SUPER:Enable()

    IF SELF:ValidateControl()

    SELF:Setstyle ( WS_DISABLED , FALSE )

    SELF:Background := Brush { Color { GetSysColor ( COLOR_WINDOW ) } } SELF:TextColor := Color { GetSysColor ( COLOR_WINDOWTEXT ) }

    ENDIF


    RETURN SELF


    METHOD Disable() CLASS MySle

    // don´t call SUPER:Disable(), because afterwards you can´t change the colors !


    IF SELF:ValidateControl()

    SELF:Setstyle ( WS_DISABLED , TRUE )

    SELF:Background := Brush { Color { GetSysColor ( COLOR_BTNFACE ) } } SELF:TextColor := Color { COLORGREEN }

    // This would set the default disabled Textcolor
    // SELF:TextColor := Color { GetSysColor ( COLOR_GRAYTEXT ) }

    ENDIF


    RETURN SELF


    btw. implement a global system where the required colors and brushes are created only once.

    regards
    Karl-Heinz

    Hello Karl

    thank You - it works fine.

    Gregory

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)