Newsgroup: it.comp.lang.vo-clipper
Titolo: cambio di colore di SLE disabilitati o ReadOnly:

Qui di seguito riporto due funzioni per il cambio di colore di SLE 
disabilitati o ReadOnly:
Non riesco a farle funzionare oppure non so come si utlizzano
E' possibile avere un aiuto ??
Grazie
Francesco D'Aquila
     METHOD DisableControls() CLASS DataWindow
             LOCAL wNumControls := ALen(SELF:aControls) AS DWORD
             LOCAL i AS DWORD
             FOR i := 1 UPTO wNumControls
                      SELF:aControls[i]:Background := BRUSH{COLOR{COLORRED}}
                      SELF:aControls[i]:TextColor := COLOR{COLORBLACK}
                      SELF:aControls[i]:Disable() 
//o Enable()
              NEXT
       METHOD ReadOnlyControls() CLASS DataWindow
                 LOCAL wNumControls := ALen(SELF:aControls) AS DWORD
                 LOCAL i AS DWORD
                 FOR i := 1 UPTO wNumControls
                      SELF:aControls[i]:Background := BRUSH{COLOR{COLORRED}}
                      SELF:aControls[i]:TextColor := COLOR{COLORBLACK}
                      SetReadOnly(SELF:aControls[i]:Handle(0),TRUE) //FALSE 
per READ/WRITE
                NEXT
        FUNCTION SetReadOnly(hControlHandle AS PTR, lSetReadOnly AS LOGIC) 
AS VOID
               SendMessage( hControlHandle, EM_SETREADONLY, 
iif(lSetReadOnly, 1, 0), 0L)
Fonte :
Fabio Cresta 

Prova questa funzione che io uso per colorare tutte le finestre a cui ho 
interesse farlo semplicemente passandogli la finestra.
L'ho provato anche con le sle e mi funziona sia che siano disabilitate che 
in readonly.
Funziona solo con V.O. 2.7, non so se il 2.6 ha la funzione GetAllChildren.
FUNCTION ColoraControlli(oWin)
 LOCAL aControls := {} AS ARRAY
 LOCAL lColora := false as logic
 aControls := oWin:GetAllChildren()
 FOR I := 1 TO ALen(aControls)
  NomeControllo := aControls[I]
  DO CASE
   CASE IsInstanceOf(NomeControllo, #RadioButtonGroup)
    lColora := true
   CASE IsInstanceOf(NomeControllo, #GroupBox)
    lColora := true
   CASE IsInstanceOf(NomeControllo, #CheckBox)
    lColora := true
   CASE IsInstanceOf(NomeControllo, #RadioButton)
    lColora := true
   CASE IsInstanceOf(NomeControllo, #FixedText)
       lColora := true
   ENDCASE
   IF lColora
        NomeControllo:Background := Brush{ProgramColor}
        NomeControllo:TextColor := ProgramTextColor
   ENDIF
   lColora := false
 NEXT
 oWin:Background := Brush{ProgramColor}
RETURN NIL
define ProgramColor := Color{0,0,0} // o colore che preferisci tu
define ProgramTextColor := Color{255,255,255} // o colore che preferisci tu
Ciao
Massimo Friargiu

Dimenticavo per le sle aggiungi semplicemente:
CASE IsInstanceOf(NomeControllo, #SingleLineEdit)
Ariciao
Massimo 

 ha scritto nel 
messaggio news:447d7bb6$0$14779$4faf...@reader4.news.tin.it...


 ha scritto nel 
messaggio news:447de501$0$18284$4faf...@reader1.news.tin.it...


 ha scritto nel 
messaggio news:447de501$0$18284$4faf...@reader1.news.tin.it...


 ha scritto nel 
messaggio news:447e5ea1$0$29733$4faf...@reader2.news.tin.it...


Ciao. Prova questa classe, facendola ereditare alle SLE. Io l'ho 
implementata nei miei programmi e va benissimo.
CLASS MiaSLE INHERIT SingleLineEdit
PROTECT _ColoreTestoAbilitato AS Color
PROTECT _ColoreTestoDisabilitato AS Color
PROTECT _ColoreSfondoAbilitato AS Brush
PROTECT _ColoreSfondoDisabilitato AS Brush
DECLARE ASSIGN  ColoreTestoDisabilitato,ColoreSfondoDisabilitato
METHOD AddStyle( nStyle ) CLASS MiaSLE
 RETURN SetWindowLong( SELF:Handle(), ;
                       GWL_STYLE, ;
                       _Or( LONG( SELF:WindowStyles ), ;
                            LONG( nStyle ) ) ) > 0
ASSIGN BackGround(oBrush) CLASS MiaSLE
IF IsWindowEnabled(SELF:Handle())
 SELF:_ColoreSfondoAbilitato := oBrush
 SUPER:Background := oBrush
 RETURN SELF:_ColoreSfondoAbilitato
ELSE
 SELF:_ColoreSfondoDisabilitato := oBrush
 SUPER:Background := oBrush
 RETURN SELF:_ColoreSfondoDisabilitato
ENDIF
ACCESS ColoreSfondoDisabilitato() CLASS MiaSLE
RETURN SELF:_ColoreSfondoDisabilitato
ASSIGN ColoreSfondoDisabilitato(oBrush AS brush) AS Brush PASCAL CLASS 
MiaSLE
 SELF:_ColoreSfondoDisabilitato := oBrush
 RETURN oBrush
ACCESS ColoreTestoDisabilitato() CLASS MiaSLE
RETURN SELF:_ColoreTestoDisabilitato
ASSIGN ColoreTestoDisabilitato(cColor AS Color) AS Color PASCAL CLASS MiaSLE
 SELF:_ColoreTestoDisabilitato := cColor
 RETURN SELF:_ColoreTestoDisabilitato
METHOD Disable() CLASS MiaSLE
SUPER:Background := SELF:_ColoreSfondoDisabilitato //Brush{BRUSHLIGHT} 
//SysObject():ColoreNoModifica //Brush{BRUSHLIGHT}
SUPER:TextColor := SELF:_ColoreTestoDisabilitato
 RETURN SELF:AddStyle( WS_DISABLED )
METHOD Enable() CLASS MiaSLE
SUPER:TextColor  := SELF:_ColoreTestoAbilitato
SUPER:Background  := SELF:_ColoreSfondoAbilitato
RETURN SELF:RemoveStyle( WS_DISABLED )
METHOD HasStyle( nStyle ) CLASS MiaSLE
 RETURN _And( LONG( SELF:WindowStyles ), LONG( nStyle ) ) > 0
METHOD Init ( oOwner, xID, oPoint, oDimension, kStyle) CLASS MiaSLE
SUPER:Init( oOwner, xID, oPoint, oDimension, kStyle )
SELF:_ColoreTestoAbilitato := Color{0,0,0}
SELF:_ColoreSfondoAbilitato := Brush{BRUSHWHITE}
SELF:_ColoreTestoDisabilitato := Color{0,0,0}
SELF:_ColoreSfondoDisabilitato := Brush{BRUSHLIGHT}
RETURN SELF
METHOD RemoveStyle( nStyle ) CLASS MiaSLE
 IF !SELF:HasStyle( nStyle )
  RETURN TRUE
 ENDIF
 RETURN SetWindowLong( SELF:Handle(), ;
                       GWL_STYLE, ;
                       LONG( _XOr( LONG( SELF:WindowStyles ), ;
                                   LONG( nStyle ) ) ) ) > 0
ASSIGN TextColor(cColor) CLASS MiaSle
IF IsWindowEnabled(SELF:Handle())
 SELF:_ColoreTestoAbilitato := cColor
 SUPER:TextColor := SELF:_ColoreTestoAbilitato
 RETURN SELF:_ColoreTestoAbilitato
ELSE
 SELF:_ColoreTestoDisabilitato := cColor
 SUPER:TextColor := SELF:_ColoreTestoDisabilitato
 RETURN SELF:_ColoreTestoDisabilitato
ENDIF
ACCESS WindowStyles CLASS MiaSLE
 RETURN GetWindowLong( SELF:Handle(), GWL_STYLE )

 ha scritto nel messaggio 
news:447e7d40$0$36933$4faf...@reader3.news.tin.it...


Risolto?
Ciao
Max