Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SingleLineEdit ReadOnly color & textcolor

84 views
Skip to first unread message

Grzegorz R.

unread,
Oct 16, 2021, 7:14:04 AM10/16/21
to
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

Karl-Heinz

unread,
Oct 19, 2021, 10:15:16 AM10/19/21
to
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

Grzegorz R.

unread,
Nov 15, 2021, 9:55:19 AM11/15/21
to
Hello Karl

thank You - it works fine.

Gregory
0 new messages