Colores de get desabilitado con estilo password falla

Colores de get desabilitado con estilo password falla

Postby carlos vargas » Tue Jun 18, 2024 6:00 pm

Image
Code: Select all  Expand view  RUN

...
   WITH OBJECT TGet()
      :lDisColors    := FALSE
      :lClrFocus     := TRUE
      :nClrFocus     := CLR_MENTA
      :bColorBlock   := <|oGet|
         WITH OBJECT oGet
            IF IsWindowEnabled( :hWnd ) .and. !:lReadOnly
               IF :HasFocus
                  RETURN { CLR_BLACK, :nClrFocus }
               ELSE
                  RETURN { CLR_BLUE, CLR_WHITE }
               ENDIF
            ENDIF
         END
         RETURN { CLR_BLACK, CLR_SOFTYELLOW }
      >
   END
   //tGet():bColorBlock := { |oGet| IIf( oGet:lFocused, { CLR_BLACK, CLR_MENTA }, IIf( !oGet:lActive, { CLR_BLUE, CLR_SOFTYELLOW }, { CLR_BLACK, CLR_WHITE } ) ) }
...
 

Code: Select all  Expand view  RUN

#define CLR_MENTA              RGB( 221, 255, 238 )
#define CLR_SOFTYELLOW    RGB( 255, 251, 225 )
#define CLR_MYCELESTE1     RGB( 074, 108, 154 )
#define CLR_MYCELESTE2     RGB( 191, 219, 255 )
...
   lEdit := .f.
...
   REDEFINE GET oSrv_Name VAR cSrv_Name ID 101 OF oDlg WHEN lEdit
   REDEFINE GET oSrv_Data VAR cSrv_Data ID 102 OF oDlg WHEN lEdit
   REDEFINE GET oSrv_User VAR cSrv_User ID 103 OF oDlg WHEN lEdit
   REDEFINE GET oSrv_Pass VAR cSrv_Pass ID 104 OF oDlg WHEN lEdit
   REDEFINE GET oSrv_Port VAR nSrv_Port ID 105 OF oDlg WHEN lEdit PICTURE "999999"
..
   REDEFINE BUTTON oBtnTest;
      ID 106 OF oDlg;
      WHEN !lEdit;
      ACTION MyTestConn()
...
FUNCTION MyEditConn()

   lEdit := TRUE

   oDlg:Refresh()
...
 

No respeta el cambio de color para un get desabilitado cuando el get es de tipo password
he intentado con estos dos codigos los cuales trabajan biendo, siempre y cuando el get no sea de tipo password, cuando es tipo password se muestra el el comun gray/blanco.
he intentado usar con el style ES_PASSWORD desde dialogo resource, o quitando ese estilo y usando la data oGet:lPassword := .T.

este es el codigo que controla eso en la clase tget, igualmente he intentado cambiarlo sin exito
method paint
Code: Select all  Expand view  RUN

...
      if IsWindowEnabled( ::hWnd ) .and. ! ::lReadOnly
         if ::WinStyle( ES_READONLY )
            ::SendMsg( EM_SETREADONLY, 0 )
         endif
         CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
      elseif ::lPassword
         if !::WinStyle( ES_READONLY )
            ::SendMsg( EM_SETREADONLY, 1 )
         endif
         CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
      else
         if ::bColor == nil
            if ::lDisColors
               nClrT  := GetSysColor( ::nClrGrayText )
               nClrP  := GetSysColor( COLOR_WINDOW )
               SetTextColor( ::hDC, nClrT )   //GetSysColor( ::nClrGrayText )
               SetBkColor( ::hDC, nClrP )   //GetSysColor( COLOR_WINDOW )
               nClrBtnPane := GetSysColor( COLOR_WINDOW )
            else
               if ValType( ::nClrTextDis ) == "B"
                  nClrT    := Eval( ::nClrTextDis )
                  SetTextColor( ::hDC, nClrT )  //Eval( ::nClrTextDis )
               elseif ValType( ::nClrTextDis ) == "N"
                  if ::nClrTextDis >= 0
                     nClrT  := ::nClrTextDis
                     SetTextColor( ::hDC, nClrT )   //::nClrTextDis
                     nClrBtnTxt := ::nClrTextDis
                  else
                     nClrT  := ::nClrText
                     SetTextColor( ::hDC, nClrT )   //::nClrText
                  endif
              endif

              if ValType( ::nClrPaneDis ) == "B"
                  nClrP   := Eval( ::nClrPaneDis )
                  SetBkColor( ::hDC, nClrP )   //Eval( ::nClrPaneDis )
              elseif ValType( ::nClrPaneDis ) == "N"
                  if ::nClrPaneDis >= 0
                     nClrP  := ::nClrPaneDis
                     SetBkColor( ::hDC, nClrP )  //::nClrPaneDis
                     nClrBtnPane := ::nClrPaneDis
                  else
                     nClrP  := ::nClrPane
                     SetBkColor( ::hDC, nClrP )   //::nClrPane
                  endif
              endif
            endif
         else
            tmp      := ::aColor //Eval( ::bColor, Self )
            nClrT    := tmp[ 1 ]
            nClrP    := tmp[ 2 ]
            SetTextColor( ::hDC, nClrT )   //tmp[ 1 ]
            SetBkColor(   ::hDC, nClrP )   //tmp[ 2 ]
            nClrBtnPane := tmp[ 2 ]
            nClrBtnTxt  := tmp[ 1 ]
         ENDIF
...
 

Me parece que no llega a evaluar las condiciones, que cuando es password, esquiva los cambios..
Code: Select all  Expand view  RUN

...
      elseif ::lPassword
         if !::WinStyle( ES_READONLY )
            ::SendMsg( EM_SETREADONLY, 1 )
         endif
         CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
      else
...
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Colores de get desabilitado con estilo password falla

Postby karinha » Tue Jun 18, 2024 6:53 pm

Master Carlos, mira se ayuda:

Code: Select all  Expand view  RUN

// C:\VERTIZ\VERTIZ2.PRG - 21/07/2021 - By Joao Santos - Sao Paulo/Brasil.
// C:\VERTIZ\VERTIZ2.RC  - 18/06/2024 - By Joao Santos - Sao Paulo/Brasil.

#Include "FiveWin.ch"

STATIC oWnd, lLigaBtn := .F., lEdit := .T.

FUNCTION Main()

   LOCAL oMenu

   SetBalloon( .T. ) // Balloon shape required for tooltips
   SkinButtons()
   
   menu oMenu

      MenuItem "From Resource" action FromrES( oWnd )

   endmenu  

   define window oWnd title "VERTIZ: Teste de Contraseña" menu oMenu pixel
   
   activate window oWnd Maximized

RETURN( oWnd )

Function FromRes( oWnd )

   LOCAL oDlg, oFont, wFonte_FixedSys, oContinuar, oSaida, IDCor, oGroup
   LOCAL aGrad, aGet := ARRAY(5), XPASSWORD := SPACE(10) // "Enrique"
   LOCAL oMuestra

   SETCAPSLOCK( .T. ) //  = Liga e desliga o Capslock

   // aGrad := { { 0.30, CLR_BLACK, CLR_YELLOW},{ 0.50, CLR_YELLOW, CLR_BLACK } }
   aGrad := { { 0.30, CLR_CYAN, CLR_HCYAN },{ 0.70, CLR_HCYAN, CLR_CYAN } }
   
   DEFINE FONT oFont NAME "Tahoma" SIZE 0,    -16 BOLD
   DEFINE FONT wFonte_FixedSys NAME "FixedSys"    SIZE 10, 10
   
   DEFINE DIALOG oDlg RESOURCE "DLG_PASSWORD" OF oWnd GRADIENT aGrad

   oDlg:lHelpIcon := .F.

   For iDcor=401 TO 405
      REDEFINE SAY ID IDCor OF oDlg COLORS CLR_BLACK, CLR_WHITE              ;
         UPDATE FONT wFonte_FixedSys TRANSPARENT
   Next IDCor  // By Ednaldo Rolim - Yes!

   // Salida
   REDEFINE SAY ID 420 OF oDlg COLORS CLR_BLACK, CLR_WHITE                   ;
      UPDATE FONT wFonte_FixedSys TRANSPARENT

   REDEFINE GROUP oGroup ID 501 COLOR CLR_BLACK, CLR_WHITE OF oDlg           ;
      FONT wFonte_FixedSys TRANSPARENT

   IF Set( _SET_INSERT, ! Set( _SET_INSERT ) )
      Set( _SET_INSERT, ! Set( _SET_INSERT ) )
   ENDIF

   //-> PARA GRABAR, USE: ENCRYPT / DECRYPT
   REDEFINE GET aGet[1] VAR XPASSWORD PICTURE "@KR" ID 20 OF oDlg ;
      FONT oFont UPDATE COLOR CLR_BLACK, CLR_YELLOW WHEN( lEdit ) ; // use Disable()
      VALID VERIFICA_PASSWORD( aGet, XPASSWORD, oContinuar )

   aGet[1]:lPassword := .T.

   aGet[1]:cToolTip := "Digite Contraseña"

   aGet[1]:lBtnTransparent := .T.        // transparent button
   aGet[1]:lAdjustBtn      := .T.        // Button Get Adjust
   aGet[1]:lDisColors      := .F.        // Deactive disable color
   aGet[1]:nClrTextDis     := CLR_BLACK  // Color text disable status
   aGet[1]:nClrPaneDis     := CLR_YELLOW // Color Pane disable status

   // SOLO PARA PRUEBAS
   // Invisible GET - SIN CLAUSULA PASSWORD EN EL GET DEL DIALOGO.
   REDEFINE GET aGet[2] VAR XPASSWORD PICTURE "@KR" ID 21 OF oDlg            ;
      FONT oFont UPDATE COLOR CLR_BLACK, CLR_YELLOW

   aGet[2]:lPassword := .T.

   REDEFINE BUTTONBMP oContinuar ID 301 OF oDlg WHEN( lLigaBtn )            ;
      ACTION( oDlg:End(), MI_FUNCION() )

   REDEFINE BUTTONBMP oSaida ID 302 OF oDlg ACTION( oDlg:End() ) CANCEL

   oSaida:cToolTip := "Saida - Exit - Cancelar "

   REDEFINE BUTTONBMP oMuestra ID 303 OF oDlg ;
      ACTION( MUESTRA_PASSWORD( aGet, XPASSWORD ) )

   SET FONT OF oContinuar TO wFonte_FixedSys
   SET FONT OF oSaida     TO wFonte_FixedSys
   SET FONT OF oMuestra   TO wFonte_FixedSys

   ACTIVATE DIALOG oDlg CENTERED ON INIT( aGet[2]:Hide() )

   oFont:End()
   wFonte_FixedSys:End()

   SETCAPSLOCK( .F. ) //  = Liga e desliga o Capslock
 
return nil

FUNCTION VERIFICA_PASSWORD( aGet, CPASSWORD, oContinuar )

   LOCAL xcPassword

   IF( ALLTRIM( CPASSWORD ) ) == "Enrique"

      ? "Password esta bien continue... " + CPASSWORD

      lLigaBtn := .T.

      oContinuar:Enable()
      oContinuar:Refresh()

   ELSE

      ? "Password no esta bien retorne... " + CPASSWORD

      // xcPassword := SPACE(10)

      lEdit := .F.

      // aGet[1]:VARPUT( xcPassword )

      aGet[1]:Disable()  // Aqui, master Carlos.
      aGet[1]:Refresh()

      lLigaBtn := .F.

      oContinuar:Disable()
      oContinuar:Refresh()

      RETURN( .F. )

   ENDIF

RETURN( .T. )

FUNCTION MUESTRA_PASSWORD( aGet, CPASSWORD )

   IF( .NOT. EMPTY( CPASSWORD ) )

      // ? CPASSWORD, ENCRYPT( CPASSWORD )

      // ? DECRYPT( CPASSWORD ), CPASSWORD

      aGet[1]:Hide()

      aGet[2]:Show()

      aGet[2]:VARPUT( CPASSWORD )
      aGet[2]:Refresh()

   ELSE

      ? "ASI NO, ESTA VACIO HOMBRE!"

   ENDIF

RETURN NIL

FUNCTION MI_FUNCION()

   ? [CONTINUE... TU DIALOGO...]

RETURN NIL

*----------------------------------------------------------------------
* Vejam com funciona
*----------------------------------------------------------------------
* SETCAPSLOCK( .T. ou .F. )  = Liga e desliga o Capslock
* SETNUMLOCK( .T. ou .F. )   = Liga e desliga o NumLock
* SETSCROLLOCK( .T. ou .F. ) = Liga e desliga o ScrollLock
* SETINSERT( .T. ou .F. )    = Liga e desliga o Insert
*----------------------------------------------------------------------
* VERCAPSLOCK()  = Sem parametros retorna o estado do Capslock
* VERNUMLOCK()   = Sem parametros retorna o estado do NumLock
* VERSCROLLOCK() = Sem parametros retorna o estado do ScrollLock
* VERINSERT()    = Sem parametros retorna o estado do Insert
*----------------------------------------------------------------------

/*
*************
function MAIN
*************

? SETCAPSLOCK( .F. )
? "Desligando o CapsLock"
SETCAPSLOCK( .T. )
? "Ligando o CapsLock"
SETCAPSLOCK( .F. )
? "Desligando o CapsLock"
SETCAPSLOCK( .T. )
? "Ligando o CapsLock"
SETCAPSLOCK( .F. )
? "Desligando o CapsLock"

? "O Capslock esta' " + iif( VERCAPSLOCK(), "Ligado", "Desligado" )

SETNUMLOCK( .F. )
? "Desligando o NumLock"
SETNUMLOCK( .T. )
? "Ligando o NumLock"
SETNUMLOCK( .F. )
? "Desligando o NumLock"
SETNUMLOCK( .T. )
? "Ligando o NumLock"
SETNUMLOCK( .F. )
? "Desligando o NumLock"

? "O Numlock esta' " + iif( VERNUMLOCK(), "Ligado", "Desligado" )

SETSCROLLOCK( .F. )
? "Desligando o ScrollLock"
SETSCROLLOCK( .T. )
? "Ligando o ScrollLock"
SETSCROLLOCK( .F. )
? "Desligando o ScrollLock"
SETSCROLLOCK( .T. )
? "Ligando o ScrollLock"
SETSCROLLOCK( .F. )
? "Desligando o ScrollLock"

? "O ScrollLock esta' " + iif( VERSCROLLOCK(), "Ligado", "Desligado" )

SETINSERT( .T. )
? "Ligando o Insert"

SETINSERT( .F. )
? "Desligando o Insert"

? "O Insert esta' " + iif( VERINSERT(), "Ligado", "Desligado" )

return NIL
*/


*------------------------------------------------------------*
*            FUNCAO PARA ATIVAR A TECLA CAPSLOCK             *
*------------------------------------------------------------*

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( SETCAPSLOCK )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

if( (hb_parl(1) && !(keyState[VK_CAPITAL] & 0)) || (!hb_parl(1) && (keyState[VK_CAPITAL] & 1)) )
    {
      keybd_event( VK_CAPITAL, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 );
      keybd_event( VK_CAPITAL, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    }
}

#pragma enddump

*-----------------------------------------------------------*
*            FUNCAO PARA ATIVAR A TECLA NUMLOCK             *
*-----------------------------------------------------------*

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( SETNUMLOCK )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

if( (hb_parl(1) && !(keyState[VK_NUMLOCK] & 0)) || (!hb_parl(1) && (keyState[VK_NUMLOCK] & 1)) )
    {
      keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 );
      keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    }
}

#pragma enddump

*-----------------------------------------------------------*
*            FUNCAO PARA ATIVAR A TECLA SCROLLOCK           *
*-----------------------------------------------------------*

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( SETSCROLLOCK )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

if( (hb_parl(1) && !(keyState[VK_SCROLL] & 0)) || (!hb_parl(1) && (keyState[VK_SCROLL] & 1)) )
    {
      keybd_event( VK_SCROLL, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 );
      keybd_event( VK_SCROLL, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    }
}

#pragma enddump

*-----------------------------------------------------------*
*            FUNCAO PARA ATIVAR A TECLA SCROLLOCK           *
*-----------------------------------------------------------*

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( SETINSERT )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

if( (hb_parl(1) && !(keyState[VK_INSERT] & 0)) || (!hb_parl(1) && (keyState[VK_INSERT] & 1)) )
    {
      keybd_event( VK_INSERT, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 );
      keybd_event( VK_INSERT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    }
}

#pragma enddump

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( VERCAPSLOCK )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

hb_retl( keyState[VK_CAPITAL] );
}

#pragma enddump

*-----------------------------------------------------------*
*            FUNCAO PARA VERIFICAR A TECLA NUMLOCK          *
*-----------------------------------------------------------*

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( VERNUMLOCK )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

hb_retl( keyState[VK_NUMLOCK] );
}

#pragma enddump

*-----------------------------------------------------------*
*          FUNCAO PARA VERIFICAR A TECLA SCROLLOCK          *
*-----------------------------------------------------------*

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( VERSCROLLOCK )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

hb_retl( keyState[VK_SCROLL] );
}

#pragma enddump

*-----------------------------------------------------------*
*          FUNCAO PARA VERIFICAR A TECLA SCROLLOCK          *
*-----------------------------------------------------------*

#pragma begindump

#define _WIN32_IE 0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( VERINSERT )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

hb_retl( keyState[VK_INSERT] );
}

#pragma enddump

// - fin / end - kapiabafwh@gmail.com
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores de get desabilitado con estilo password falla

Postby karinha » Tue Jun 18, 2024 6:54 pm

// VERTIZ2.RC

Code: Select all  Expand view  RUN

DLG_PASSWORD DIALOG 256, 98, 238, 148
STYLE DS_ABSALIGN | DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "VERTIZ: Contraseña"
FONT 8, "MS Sans Serif"
{
 EDITTEXT 20, 57, 63, 70, 14, ES_CENTER | ES_MULTILINE | ES_PASSWORD | WS_BORDER | WS_GROUP | WS_TABSTOP
 EDITTEXT 21, 57, 63, 70, 14, ES_CENTER | ES_MULTILINE | WS_BORDER | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Confirma", 301, 68, 96, 70, 14
 PUSHBUTTON "&Salida", 302, 140, 96, 50, 14
 PUSHBUTTON "&Muestra", 303, 170, 64, 50, 14
 CTEXT "ATENÇÃO: CHAME O SUPERVISOR.", 401, 1, 3, 236, 12, SS_CENTER | NOT WS_GROUP
 CTEXT "OBRIGATÓRIO SENHA MASTER.", 402, 1, 15, 236, 12, SS_CENTER | NOT WS_GROUP
 CTEXT "Digite Contraseña Master", 403, 19, 30, 200, 12, SS_CENTER | NOT WS_GROUP
 GROUPBOX "Digite Contraseña Correta", 501, 17, 44, 150, 50, BS_GROUPBOX
 LTEXT "<ESC> Salir", 420, 5, 97, 60, 14, NOT WS_GROUP
 CTEXT "SOMENTE USUÁRIO MASTER.", 404, 2, 113, 236, 14, SS_CENTER | NOT WS_GROUP
 CTEXT "GERENTE OU O DONO DA EMPRESA.", 405, 1, 127, 236, 14, SS_CENTER | NOT WS_GROUP
}
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores de get desabilitado con estilo password falla

Postby sysctrl2 » Tue Jun 18, 2024 7:12 pm

Si eso le pasa a los de nivel master,
que se puede esperar a los que tenemos nivel JR. :lol: :roll: :cry:
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1022
Joined: Mon Feb 05, 2007 7:15 pm

Re: Colores de get desabilitado con estilo password falla

Postby Antonio Linares » Wed Jun 19, 2024 9:36 am

Carlos,

Prueba a comentar esa sección de código:
Code: Select all  Expand view  RUN
     elseif ::lPassword
         if !::WinStyle( ES_READONLY )
            ::SendMsg( EM_SETREADONLY, 1 )
         endif
         CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
      else

y veamos como se comporta :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Colores de get desabilitado con estilo password falla

Postby carlos vargas » Wed Jun 19, 2024 3:32 pm

he comentado el código
Image
al ejecutar, ahora si respeta los colores, pero el estilo password se fue al carajo, cuando entra en modo edicion, cuando cambio el valor del bloque WHEN .T.
entoces, si toma el el estilo password
al inicio
Image
al editar
Image
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Colores de get desabilitado con estilo password falla

Postby carlos vargas » Wed Jun 19, 2024 3:42 pm

Karina, no me funciono, me parece que es un problema en tget.prg
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Colores de get desabilitado con estilo password falla

Postby karinha » Wed Jun 19, 2024 4:54 pm

Master Carlos.

Code: Select all  Expand view  RUN

METHOD DispText() CLASS TGet

   if ::lPassword .and. ::oGet:Type == "C"
#ifdef UTFREVN
      if ::lWideChar
         ::SetText( ::GetText() )
      else
         SetWindowText( ::hWnd, Replicate( If( IsAppThemed(), Chr( 149 ), "*" ),;
                                           Len( Trim( ::oGet:buffer ) ) ) )
      endif
#else
         /* //-> Mudei em 25/10/2016 - Para Aparecer um * no PASSWORD-WS Joao
         SetWindowText( ::hWnd, Replicate( If( IsAppThemed(), Chr( 149 ), "*" ),;
                                           Len( Trim( ::oGet:buffer ) ) ) )
         */

         SetWindowText( ::hWnd, Replicate( If( IsAppThemed(), Chr( 42 ), "*" ),;
                                           Len( Trim( ::oGet:buffer ) ) ) )
                                           
#endif
   else
#ifdef UTFREVN2
      if ::lLimitChars
//         ::SetText( Trim( ::GetText() ) )
         ::SetText( Trim( ::oGet:buffer ) ) // fix 2016-07-07
      else
         SetWindowText( ::hWnd, If( ! Empty( ::cCueText );
                                      .and. Empty( ::oGet:VarGet() );
                                      .and. GetFocus() != ::hWnd,;  // Focus is outside
                                      "", ::oGet:buffer ) )
      endif
#else
      SetWindowText( ::hWnd, If( ! Empty( ::cCueText );
                                   .and. Empty( ::oGet:VarGet() );
                                   .and. GetFocus() != ::hWnd,;  // Focus is outside
                                   "", ::oGet:buffer ) )
#endif
   endif

return nil
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores de get desabilitado con estilo password falla

Postby karinha » Wed Jun 19, 2024 5:07 pm

https://imgur.com/pE1XW9g

Image

perfecto con WORKSHOP.exe

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores de get desabilitado con estilo password falla

Postby carlos vargas » Fri Jun 21, 2024 10:23 pm

Antonio, he comentado la parte que me indicaste, seguia sin funcionar (como comente en un post anterior), pero el codigo de karinha me dio un poco de luz (gracias karinha),
Code: Select all  Expand view  RUN

//KDS
//      elseif ::lPassword
//         if !::WinStyle( ES_READONLY )
//            ::SendMsg( EM_SETREADONLY, 1 )
//         endif
//         CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
      else
 

adicional a este cambio, he agregado esta linea
:lWideChar := FALSE
ahora si funciona(no entiendo por muy bien por que), pero hay un "pero" y es que cuando al inicio muestra los get deshabilitado, el tamaño de los caracteres que se muestra en el get del password se corresponden con el font usado en todos los get, hasta ahi todo perfecto, pero cuando se habilita los get para su edición, se nota un cambio de tamaño en la fuente del get que tiene la propiedad password, es como si antes de pintarser el valor del get, se aplicara una fuente diferente o se dejara de aplicar la del dialogo, no lo he logrado dicernirlo.
Code: Select all  Expand view  RUN

   WITH OBJECT TGet()
      :lWideChar     := FALSE //nueva linea
      :lDisColors    := FALSE
      :lClrFocus     := TRUE
      :nClrFocus     := CLR_MENTA
      :bColorBlock   := <|oGet|
         WITH OBJECT oGet
            IF IsWindowEnabled( :hWnd ) .and. !:lReadOnly
               IF :HasFocus
                  RETURN { CLR_BLACK, :nClrFocus }
               ELSE
                  RETURN { CLR_BLUE, CLR_WHITE }
               ENDIF
            ENDIF
         END
         RETURN { CLR_BLACK, CLR_SOFTYELLOW }
      >
   END
 

Image
Image
he notado mucho codigo en la clase get con compilacion condicional segun constantes definidas, da cosita meterle mano a eso.. :-)
#define UTFREVN
#define UTFREVN2 // 2016-07-03
#define ATRPICTURE //2018-10-19
#define CNL1 //2018/10/30

el codigo del metodo DispText de karinha es un poco diferente al adicional, no lo reemplaze por un poco de temor al desconocer versiones y si afectara mas adelante... :-(
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 52 guests