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
Gracias
Existe mascara de GET que convierta a minuscula?
- 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?
Hola.
Desde código, lo desconozco. Nunca lo he usado.
Pero si usas editor de recursos PellesC, intentalo con Case Lower YES.
Saludos.
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
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Existe mascara de GET que convierta a minuscula?
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
Re: Existe mascara de GET que convierta a minuscula?
Muchas gracias a los colegas que respondieron.
Interesante las soluciones, las evaluaré para tomar lo mejor de ellas.
Saludos
Interesante las soluciones, las evaluaré para tomar lo mejor de ellas.
Saludos
- 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?
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.
clase tget
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.
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
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
- 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?
Tan facil como lo expone Francisco, asi tambien lo hago...sin hechar nada de codigo, saludos...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.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!