Existe mascara de GET que convierta a minuscula?

Post Reply
hidroxid
Posts: 28
Joined: Sun Apr 24, 2011 12:50 am

Existe mascara de GET que convierta a minuscula?

Post by hidroxid »

Buenas.

Ante todo disculpas si el tema es OFF TOPIC.

Existe mascara contraria a @! que permita que los datos ingresados se conviertan a minusculas automáticamente?

Como hay tantas funciones no documentadas en Harbour hago esta pregunta para no trabajar de mas :wink:

Gracias
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Existe mascara de GET que convierta a minuscula?

Post by FranciscoA »

Hola.
Desde código, lo desconozco. Nunca lo he usado.
Pero si usas editor de recursos PellesC, intentalo con Case Lower YES.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Existe mascara de GET que convierta a minuscula?

Post by karinha »

Yo desligo el Capslock al adentrar al modulo.

Code: Select all

#include "fivewin.ch"
*#include "Dll.ch"

*----------------------------------------------------------------------
* 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 enddumpa
 
João Santos - São Paulo - Brasil
hidroxid
Posts: 28
Joined: Sun Apr 24, 2011 12:50 am

Re: Existe mascara de GET que convierta a minuscula?

Post by hidroxid »

Muchas gracias a los colegas que respondieron.

Interesante las soluciones, las evaluaré para tomar lo mejor de ellas.

Saludos
User avatar
noe aburto
Posts: 420
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Existe mascara de GET que convierta a minuscula?

Post by noe aburto »

saludos.

Cuando algunos usuarios necios escriben en campos en minusculas siendo que deben capturar en mayusculas, para ignorar el picture '@!'
modifique las clases tget y mget para que cuando lo indique en alguno campos, este sea siempre en mayusculas. pero agregue el uso de ñÑ y acentos en las letras á é´í ó´ú

Si tu quieres en minusculas, solo usa en lugar del Upper() el Lower() en estas clases:
te expongo la clase tget (y lo mismo hice en el mget), verifica la variable que agregue: lkeyUpper, por ej.

Code: Select all

// get normal
oGET:=TGet():New(nROW,nCOL,..
oGET:lKeyUpper:=.t.

oGET:=TMultiGet():New(nROW,nCOL],..
oGET:lKeyUpper:=.t.
 
clase tget

Code: Select all

CLASS TGet FROM TControl

   DATA   oGet, oBtn, bAction
   DATA   bMin, bMax
   DATA   nPos
   DATA   lReadOnly, lPassword
   DATA   cError, cBmpName
   DATA   hHeap
   DATA   cPicture
   DATA   bPostKey
   DATA   lSpinner
   DATA   nOldClrPane // Old background color, if color changed with focus
   DATA   nClrTextDis, nClrPaneDis
   DATA   nBmpWidth
   DATA   lAdjustBtn // Adjust buutton get
   DATA   lBtnTransparent
   DATA   cCueText
   DATA   nTxtStyle
   DATA   lKeepFocus INIT .T. // keep the focus after pressing the ACTION button
   DATA   lKeyUpper

METHOD New( nRow, nCol, bSetGet, oWnd, nWidth, nHeight, cPict, bValid,;
            nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg,;
            lUpdate, bWhen, lCenter, lRight, bChanged, lReadOnly,;
            lPassword, lNoBorder, nHelpId, lSpinner,;
            bUp, bDown, bMin, bMax, bAction, cBmpName, cVarName,;
            cCueText ) CLASS TGet

   local cText := Space( 50 )

   DEFAULT nClrFore  := GetSysColor( COLOR_WINDOWTEXT ),;
           nClrBack  := GetSysColor( COLOR_WINDOW ),;
           oWnd      := GetWndDefault(),;
           nHeight   := If( oFont != nil, oFont:nHeight, 12 ),;
           lDesign   := .f., lPixel := .f., lUpdate := .f.,;
           lCenter   := .f., lRight := .f.,;
           lReadOnly := .f., lPassword := .f.,;
           lSpinner  := .f.,;
           nRow      := 0, nCol := 0, lNoBorder := .f.,;
           bSetGet   := bSETGET( cText )

   ::cCaption = If( cPict == nil, cValToChar( Eval( bSetGet ) ), ;
                    Transform( Eval( bSetGet ), cPict ) )

   if lSpinner
      nHeight := Max( 15, nHeight )
   endif

   ::nTop     = nRow * If( lPixel, 1, GET_CHARPIX_H )  //13
   ::nLeft    = nCol * If( lPixel, 1, GET_CHARPIX_W )  // 8
   ::nBottom  = ::nTop + nHeight - 1
   ::nRight   = ::nLeft + If( nWidth == nil, ( 1 + Len( ::cCaption ) ) * 3.5, ;
                                               nWidth - 1 ) + ;
                If( lSpinner, 20, 0 )
   ::oWnd      = oWnd
   ::nStyle    = nOR( WS_CHILD, WS_VISIBLE,;
                      ES_AUTOHSCROLL,;
                      If( ! lReadOnly, WS_TABSTOP, 0 ),;
                      If( lDesign, WS_CLIPSIBLINGS, 0 ),;
                      If( lSpinner, WS_VSCROLL, 0 ),;
                      If( lReadOnly, ES_READONLY, 0 ),;
                      If( lCenter, ES_CENTER, If( lRight, ES_RIGHT, ES_LEFT ) ) )
                   // If( lCenter .OR. lRight, ES_MULTILINE, 0 ),; Only needed for Win31

   #ifdef __CLIPPER__
      if ! lNoBorder
         ::nStyle = nOr( ::nStyle, WS_BORDER )
      endif
   #else
      if ! IsAppThemed()
         if ! lNoBorder
            ::nStyle = nOr( ::nStyle, WS_BORDER )
         endif
      else
         if ! lNoBorder
            ::nStyle = nOr( ::nStyle, If( oWnd:IsKindOf( "TDIALOG" ), WS_BORDER, 0 ) )
            ::nExStyle = WS_EX_CLIENTEDGE
         endif
      endif
   #endif

   ::nStyle    = If( lNoBorder, nAnd( ::nStyle, nNot( WS_BORDER ) ), ::nStyle )
   ::nId       = ::GetNewId()
   ::bSetGet   = bSetGet
   ::oGet      = FWGetNew( 20, 20, bSetGet, cVarName, cPict )
   ::bValid    = bValid
   ::lDrag     = lDesign
   ::lCaptured = .f.
   ::lPassword = lPassword
   ::oFont     = oFont
   ::oCursor   = oCursor
   ::cMsg      = cMsg
   ::lUpdate   = lUpdate
   ::bWhen     = bWhen
   ::bChange   = bChanged
   ::nPos      = 1  // 0   14/Aug/98
   ::lReadOnly = lReadOnly
   ::lFocused  = .f.
   ::nHelpId   = nHelpId
   ::cPicture  = cPict
   ::bPostKey  = { | x, y | y }
   ::lSpinner  = lSpinner
   ::hHeap     = 0
   ::bAction   = bAction
   ::cBmpName  = cBmpName
   ::cCueText  = cCueText
   ::nTxtStyle = nOR( ETO_CLIPPED, ETO_OPAQUE )

   ::SetColor( nClrFore, nClrBack )
   ::lAdjustBtn = .f.
   ::lBtnTransparent = .f.

   ::oGet:SetFocus()
   ::cCaption = ::oGet:Buffer
   ::oGet:KillFocus()

   ::nClrTextDis = nClrFore
   ::nClrPaneDis = ::nClrPane // nClrBack
   ::lKeyUpper   = .f.

   #ifndef __CLIPPER__
      if lPassword .and. oFont == nil
         DEFINE FONT ::oFont NAME "Arial" SIZE 0, -14 BOLD
      endif
   #endif

   if ! Empty( oWnd:hWnd )
      ::Create( "EDIT" )
      if oFont != nil
         ::SetFont( oFont )
      endif
      ::GetFont()
      oWnd:AddControl( Self )
      ::CreateButton()
   else
      oWnd:DefControl( Self )
   endif

   DEFAULT cVarName := "oGet" + ::GetCtrlIndex()

   ::cVarName = cVarName

   if lDesign
      ::CheckDots()
   endif

   if lSpinner
      ::Spinner( bUp, bDown, bMin, bMax )
   endif

return Self

//----------------------------------------------------------------------------//

METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, cPict, bValid, nClrFore,;
                 nClrBack, oFont, oCursor, cMsg, lUpdate, bWhen, bChanged,;
                 lReadOnly, lSpinner, bUp, bDown, bMin, bMax, bAction, cBmpName,;
                 cVarName, cCueText ) CLASS TGet

   DEFAULT oWnd     := GetWndDefault(),;
           nClrFore := GetSysColor( COLOR_WINDOWTEXT ),;
           nClrBack := GetSysColor( COLOR_WINDOW ),;
           lUpdate  := .f., lReadOnly := .f., lSpinner := .f.


   if Eval( bSetGet ) == nil
      Eval( bSetGet, Space( 30 ) )
   endif

   ::nId       = nId
   ::oWnd      = oWnd
   ::nHelpId   = nHelpId
   ::bSetGet   = bSetGet
   ::oGet      = FWGetNew( 20, 20, bSetGet, cVarName, cPict )
   ::bValid    = bValid
   ::lDrag     = .f.
   ::lCaptured = .f.
   ::lPassword = .f.
   ::oFont     = oFont
   ::oCursor   = oCursor
   ::cMsg      = cMsg
   ::lUpdate   = lUpdate
   ::bWhen     = bWhen
   ::bChange   = bChanged
   ::nPos      =  1  // 0   14/Aug/98
   ::lReadOnly = lReadOnly
   ::lFocused  = .f.
   ::cPicture  = cPict
   ::bPostKey  = { | x, y | y }
   ::lSpinner  = lSpinner
   ::hHeap     = 0
   ::bAction   = bAction
   ::cBmpName  = cBmpName
   ::nClrTextDis = nClrFore
   ::nClrPaneDis = nClrBack
   ::lKeyUpper = .f.
   ::cCueText  = cCueText
   ::nTxtStyle = nOR( ETO_CLIPPED, ETO_OPAQUE )

   ::SetColor( nClrFore, nClrBack )
   ::lAdjustBtn = .f.
   ::lBtnTransparent = .f.

   if lSpinner
      ::Spinner( bUp, bDown, bMin, bMax )
   endif

   oWnd:DefControl( Self )

return Self

METHOD KeyChar( nKey, nFlags ) CLASS TGet

   local nHi, nLo
   local lAccept
   local bKeyAction := SetKey( nKey )
   local nDefButton

   if ::bKeyChar != nil
      if Eval( ::bKeyChar, nKey, nFlags, Self ) == 0
         return 0
      endif
   endif

   if nKey == VK_ESCAPE  // avoids a beep!
      ::oWnd:KeyChar( nKey, nFlags )
      return 1
   endif

   #ifndef __XPP__
   if ! Empty( ::cPicture ) .and. '@!' $ ::cPicture
      nKey = Asc( CharUpper( nKey ) )
   elseif ::lKeyUpper
      // acento agudo español
      do case
      case nKey == Chr(160) // á
         nKey = Chr(181)    // Á
      case nKey == Chr(130) // é
         nKey = Chr(144)    // É
      case nKey == Chr(161) // í
         nKey = Chr(214)    // Í
      case nKey == Chr(162) // ó
         nKey = Chr(224)    // Ó
      case nKey == Chr(163) // ú
         nKey = Chr(233)    // Ú
      // letra ñ,N
      case nKey == Chr(164) // ñ
         nKey = Chr(165)    // Ñ
      otherwise
         nKey = Asc( CharUpper( nKey ) )
      endcase
   endif
   #endif

   if bKeyAction != nil .and. lAnd( nFlags, 16777216 ) // function Key
      Eval( bKeyAction, ProcName( 4 ), ProcLine( 4 ), Self )
      return 0         // Already processed, API do nothing
   endif

   if ::lReadOnly
      if nKey == VK_ESCAPE
         ::oWnd:End()
      endif
      return 0
   endif

   do case
      case nKey == VK_BACK       // Already processed at KeyDown
           return 0

      // case nKey == VK_ESCAPE
      //     return 0

      case nKey == VK_TAB .and. GetKeyState( VK_SHIFT )
           if ::bChange != nil .and. ( ::oGet:Changed .or. ::oGet:UnTransform() != ::oGet:Original )
              lAccept = Eval( ::bChange, nKey, nFlags, Self )
              if ValType( lAccept ) == "L" .and. lAccept
                 if ::oWnd:IsKindOf( "TCOMBOBOX" )
                    ::oWnd:oWnd:GoPrevCtrl( ::hWnd )
                 else
                    ::oWnd:GoPrevCtrl( ::hWnd )
                 endif
              endif
           else
              if ::oWnd:IsKindOf( "TCOMBOBOX" )
                 ::oWnd:oWnd:GoPrevCtrl( ::hWnd )
              else
                 ::oWnd:GoPrevCtrl( ::hWnd )
              endif
           endif
           return 0

      case nKey == VK_TAB .or. nKey == VK_RETURN
           if ::bChange != nil .and. ( ::oGet:Changed .or. ::oGet:UnTransform() != ::oGet:Original )
              lAccept = Eval( ::bChange, nKey, nFlags, Self )
              if ValType( lAccept ) == "L"
                 if lAccept
                    ::oWnd:GoNextCtrl( ::hWnd )
                 endif
              else
                 ::oWnd:GoNextCtrl( ::hWnd )
              endif
           else
              ::oWnd:GoNextCtrl( ::hWnd )
           endif

           #ifndef __CLIPPER__
               if nKey == VK_RETURN  // Execute DEFPUSHBUTTON Action
                  ::Super:KeyChar( nKey, nFlags )
               endif
           #endif

           return 0

      case nKey >= 32 .and. nKey < 256
           if ::oGet:buffer == nil
              return 0
           endif
           if ::nPos > Len( ::oGet:buffer )
              return 0
           endif

           ::GetSelPos( @nLo, @nHi )

           // Delete selection
           if nHi != nLo
              ::GetDelSel( nLo, nHi )
              ::EditUpdate()
           endif
           if ::oGet:Type == "N" .and. ;
              ( Chr( nKey ) == "." .or. Chr( nKey ) == "," )
              if ::oGet:Clear()
              #ifndef __XHARBOUR__
                 ::oGet:DelEnd()
              #endif
              endif
              ::oGet:ToDecPos()
           else
              if Set( _SET_INSERT )             // many thanks to HMP
                 ::oGet:Insert( Chr( nKey ) )
              else
                 ::oGet:Overstrike( Chr( nKey ) )
              end
           endif
           if ::oGet:Rejected
              if Set( _SET_BELL )
                 MsgBeep()
              endif
           endif
           ::EditUpdate()
           if nHi+1 == len( ::oGet:buffer )
              ::SetPos( nHi+2 )
           endif
           if ::oGet:TypeOut
              if ! Set( _SET_CONFIRM )
                 ::oWnd:nLastKey = VK_RETURN
                 ::oWnd:GoNextCtrl( ::hWnd )
              else
                 if Set( _SET_BELL )
                    MsgBeep()
                 endif
              endif
           endif
           if ::bChange != nil
              lAccept = Eval( ::bChange, nKey, nFlags, Self )
              if ValType( lAccept ) == "L" .and. ! lAccept
                 return 0
              endif
           endif
           Eval( ::bPostKey, Self, ::oGet:Buffer )
           if ::oBtn != nil
              ::oBtn:Refresh()
           endif

      otherwise
           return ::Super:KeyChar( nKey, nFlags )
   endcase

return 0
 
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Existe mascara de GET que convierta a minuscula?

Post by joseluisysturiz »

FranciscoA wrote:Hola.
Desde código, lo desconozco. Nunca lo he usado.
Pero si usas editor de recursos PellesC, intentalo con Case Lower YES.
Saludos.
Tan facil como lo expone Francisco, asi tambien lo hago...sin hechar nada de codigo, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
Post Reply