PICTURE "@!"
- Andrés González
- Posts: 625
- Joined: Thu Jan 19, 2006 10:45 am
- Location: Mallorca
PICTURE "@!"
Alguien sabe a que se debe que cuando utilizo la sentencia picture en un get del tipo PICTURE "@!" osea que me tome en mayusculas cuando coge una ñ me la pone en minusculas y tengo que pulsar el Shift para que la ponga en Ñ.
Problema del Harbour o Fivewin... todo el resto de letras me lo toma correcto, todas en mayusculas pero no en este caso.
Alguien conoce una solucion...
Problema del Harbour o Fivewin... todo el resto de letras me lo toma correcto, todas en mayusculas pero no en este caso.
Alguien conoce una solucion...
Saludos
Andrés González desde Mallorca
Andrés González desde Mallorca
Buen día para todos...
Prueba colocando el siguiente código en la clase TGet en el método KeyChar despues de declaraciones LOCAL y antes de cualquier otra linea de código. Ejemplo
KeyChar( nKey, nFlags ) CLASS TGet
LOCAL .........
LOCAL .........
if !Empty( ::cPicture ) .and. '@!' $ ::cPicture
nKey := Asc( UpperCase( Chr( nKey ) ) )
endif
...............
...............
Resto de código del método.
Nota: Deberás compilar y enlazar la clase TGet con _ mencionados en tu aplicación para que tome el cambio. Esta modificacion tambien toma los signos de puntuación en mayúsculas. Ej. Á É Í Ó Ú
Prueba colocando el siguiente código en la clase TGet en el método KeyChar despues de declaraciones LOCAL y antes de cualquier otra linea de código. Ejemplo
KeyChar( nKey, nFlags ) CLASS TGet
LOCAL .........
LOCAL .........
if !Empty( ::cPicture ) .and. '@!' $ ::cPicture
nKey := Asc( UpperCase( Chr( nKey ) ) )
endif
...............
...............
Resto de código del método.
Nota: Deberás compilar y enlazar la clase TGet con _ mencionados en tu aplicación para que tome el cambio. Esta modificacion tambien toma los signos de puntuación en mayúsculas. Ej. Á É Í Ó Ú
- Andrés González
- Posts: 625
- Joined: Thu Jan 19, 2006 10:45 am
- Location: Mallorca
- Andrés González
- Posts: 625
- Joined: Thu Jan 19, 2006 10:45 am
- Location: Mallorca
Un poco basto pero funciona, el problema es que realizas una comparacion mas por cada pulsacion. Supongo que el error debe de estar en la funcion Upper que no realiza el trabajo bien.
Code: Select all
if ! Empty( ::cPicture ) .and. '@!' $ ::cPicture
if chr( nKey ) = "ñ"
nKey = 209 //Ñ en mayusculas
else
nKey = Asc( Upper( Chr( nKey ) ) )
end
endif
Saludos
Andrés González desde Mallorca
Andrés González desde Mallorca
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Ya puestos a hacer:Andrés González wrote:Un poco basto pero funciona, el problema es que realizas una comparacion mas por cada pulsacion. Supongo que el error debe de estar en la funcion Upper que no realiza el trabajo bien.
Code: Select all
if ! Empty( ::cPicture ) .and. '@!' $ ::cPicture if chr( nKey ) = "ñ" nKey = 209 //Ñ en mayusculas else nKey = Asc( Upper( Chr( nKey ) ) ) end endif
If ! Empty( ::cPicture ) .and. '@!' $ ::cPicture
If chr( nKey ) $ "ñç"
if chr( nKey ) = "ñ"
nKey = 209 //Ñ en mayusculas
elseif chr( nKey ) = "ç"
nKey = ??? //Ç en mayusculas ¿Alguién sabe este código?
EndIf
EndIf
Else
nKey = Asc( Upper( Chr( nKey ) ) )
Endif
Saludos
Carlos G.
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
- Andrés González
- Posts: 625
- Joined: Thu Jan 19, 2006 10:45 am
- Location: Mallorca
Sí Manuel tienes razón, seguro que corresponde a otro procedimiento el asignar el tema de las mayúsculas por eso he hecho la refexión que el tema esta a la hora de transformar los códigos en el procedimiento UPPER no se si el tema va de la tabla ascii o que, pero bueno con esto se soluciona desde fivewin. Supongo que el tema del upper viene del harbour y que debe ser ahí donde se solucione.
Efectivamente también hace falta la ç, sobre todo aquellos que como yo vivimos en regiones de dominio del catalán. No usan la ñ (ny) pero si la ç.
Efectivamente también hace falta la ç, sobre todo aquellos que como yo vivimos en regiones de dominio del catalán. No usan la ñ (ny) pero si la ç.
Saludos
Andrés González desde Mallorca
Andrés González desde Mallorca
Buen día para todos...
DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"
Nota: Por favor utilizalo y me comentas.
Fe de errata, el problema es la funcion Upper y se resuelve con este código que se me olvidó colocar en mi post anterior. fijate lo que coloque antes y veras la función UpperCase(), lo que se me olvidó es este código colocalo al final de la clase y listo. Disculpa que pasé por alto esto.Andrés González wrote:La sentencia que indicas ya viene incluida en la clase y justamente en el lugar que indicas, por lo que me temo que no es eso la solucion....
Gracias
DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"
Nota: Por favor utilizalo y me comentas.
A mi me da en los huesos que debe ser cosa de Harbour.ARCC wrote:Buen día para todos...
Fe de errata, el problema es la funcion Upper y se resuelve con este código que se me olvidó colocar en mi post anterior. fijate lo que coloque antes y veras la función UpperCase(), lo que se me olvidó es este código colocalo al final de la clase y listo. Disculpa que pasé por alto esto.Andrés González wrote:La sentencia que indicas ya viene incluida en la clase y justamente en el lugar que indicas, por lo que me temo que no es eso la solucion....
Gracias
DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"
Nota: Por favor utilizalo y me comentas.
El error se da también en FiveLinux y/o FWPPC? Si es así la solución sólo vale para nuestro FiveWin y entonces se pierde la compatibilidad con los otros entornos.
Cierto? Cómo lo ven?
Saludos
Carlos G.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Así funciona correctamente:
Code: Select all
REQUEST HB_Lang_ES
REQUEST HB_CODEPAGE_ESWIN
function Main()
HB_LangSelect("ES") // Para mensajes, fechas, etc..
HB_SetCodePage("ESWIN") // Para ordenación, requiere CodePage.lib
MsgInfo( Upper( "ñ" ) )
return nil
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Buen día para todos...
Si tienes razón en xHarbour no funciona y el problema con la clase tGet es muy viejo, yo saqué esa función UpperCase la cual uso desde FWH 2.4, por favor prueba tu mismo ejemplo con la función UpperCase en FWH y FWxH funciona de maravilla.
#include "FiveWin.ch"
REQUEST HB_Lang_ES
REQUEST HB_CODEPAGE_ESWIN
function Main()
HB_LangSelect("ES") // Para mensajes, fechas, etc..
HB_SetCodePage("ESWIN") // Para ordenación, requiere CodePage.lib
MsgInfo( Upper( "ñ" ) )
MsgInfo( UpperCase( "ñ" ) )
return nil
DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"
Antonio:Antonio Linares wrote:Ojo, aqui funciona bien con Harbour pero NO con xHarbour
Si tienes razón en xHarbour no funciona y el problema con la clase tGet es muy viejo, yo saqué esa función UpperCase la cual uso desde FWH 2.4, por favor prueba tu mismo ejemplo con la función UpperCase en FWH y FWxH funciona de maravilla.
#include "FiveWin.ch"
REQUEST HB_Lang_ES
REQUEST HB_CODEPAGE_ESWIN
function Main()
HB_LangSelect("ES") // Para mensajes, fechas, etc..
HB_SetCodePage("ESWIN") // Para ordenación, requiere CodePage.lib
MsgInfo( Upper( "ñ" ) )
MsgInfo( UpperCase( "ñ" ) )
return nil
DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: