In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
LASTKEY()
LASTKEY()
Holla!
Se estou no TEdit do Form1 e chamo
o TEdit do Form2, digito ESC no Form2 e volta para o Form1,
como saber no Form1 qual foi a última tecla digitada?
Tentei o Lastkey() do xHarbour mas não funcionou.
Grato.
Mário
Se estou no TEdit do Form1 e chamo
o TEdit do Form2, digito ESC no Form2 e volta para o Form1,
como saber no Form1 qual foi a última tecla digitada?
Tentei o Lastkey() do xHarbour mas não funcionou.
Grato.
Mário
LASTKEY()
Mário,
> Se estou no TEdit do Form1 e chamo
> o TEdit do Form2, digito ESC no Form2 e volta para o Form1,
> como saber no Form1 qual foi a última tecla digitada?
> Tentei o Lastkey() do xHarbour mas não funcionou.
No se puede saber la última tecla pulsada, pero sí se puede saber cómo se
cerró el formulario. P.ej., si hay un botón "Aceptar" con nModalResult =
mrOK, y un botón "Cancelar" con nModalResult = mrCANCEL, puedes comprobar el
valor de retorno de ShowModal(), o la propiedad nModalResult del formulario:
IF oForm2:ShowModal() == mrOK
...
ELSE
...
ENDIF
o:
oForm2:ShowModal()
IF oForm2:nModalResult == mrOK
...
ELSE
...
ENDIF
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Se estou no TEdit do Form1 e chamo
> o TEdit do Form2, digito ESC no Form2 e volta para o Form1,
> como saber no Form1 qual foi a última tecla digitada?
> Tentei o Lastkey() do xHarbour mas não funcionou.
No se puede saber la última tecla pulsada, pero sí se puede saber cómo se
cerró el formulario. P.ej., si hay un botón "Aceptar" con nModalResult =
mrOK, y un botón "Cancelar" con nModalResult = mrCANCEL, puedes comprobar el
valor de retorno de ShowModal(), o la propiedad nModalResult del formulario:
IF oForm2:ShowModal() == mrOK
...
ELSE
...
ENDIF
o:
oForm2:ShowModal()
IF oForm2:nModalResult == mrOK
...
ELSE
...
ENDIF
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
LASTKEY()
José, estava pesquisando no manual de ajuda e encontrei a informação:
Parametros:
<oSender>: Referencia al objeto que provoca el evento
<nKey>: Código de la tecla tipo carácter pulsada
<nFlags>: Información adicional sobre la pulsación
Valor Retorno:
<Nil>: Sigue el procesamiento por defecto de Windows
<0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
hubiera llegada a pulsar ninguna tecla
Este valor de retorno daria para ser tratado. Mas não estou conseguindo
pegar o retorno:
Form1:
TEdit1
.carrego Form2
.digito ESC no campo TEdit1 do Form2
.o retorno deverá ser 0 pois não digitei nada.
.qual a sintaxe para pegar este o retorno no Form1?
Form2:
TEdit1
Parametros:
<oSender>: Referencia al objeto que provoca el evento
<nKey>: Código de la tecla tipo carácter pulsada
<nFlags>: Información adicional sobre la pulsación
Valor Retorno:
<Nil>: Sigue el procesamiento por defecto de Windows
<0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
hubiera llegada a pulsar ninguna tecla
Este valor de retorno daria para ser tratado. Mas não estou conseguindo
pegar o retorno:
Form1:
TEdit1
.carrego Form2
.digito ESC no campo TEdit1 do Form2
.o retorno deverá ser 0 pois não digitei nada.
.qual a sintaxe para pegar este o retorno no Form1?
Form2:
TEdit1
- ignacio
- Site Admin
- Mensajes: 9443
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
LASTKEY()
Mario,
Me es costoso entenderle en portugues y no consigo entender cual es su
pregunta, lo siento. Si pudiese incluir un ejemplo sería más fácil.
Un saludo,
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
news:[email=49fef28b@svctag-j7w3v3j....]49fef28b@svctag-j7w3v3j....[/email]
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
Me es costoso entenderle en portugues y no consigo entender cual es su
pregunta, lo siento. Si pudiese incluir un ejemplo sería más fácil.
Un saludo,
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
news:[email=49fef28b@svctag-j7w3v3j....]49fef28b@svctag-j7w3v3j....[/email]
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
LASTKEY()
Mario:
Pon aunque sea en código clipper lo que quieres hacer, porque según lo
que entiendo yo creo que si quieres saber la tecla pulsado en el edit
del Form2 en el Form1 no va a ser posible, lo que si puede ser posible
es saber que valor tiene el edit del Form2 cuando se cierra, pero para
eso tienes que emplear una Data que contenga dicho valor de retorno.
Mário Angelini escribió:
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
Todo esto es en el formulario que dispara el evento pero no se puede
aplicar en otro formulario.
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
Pon aunque sea en código clipper lo que quieres hacer, porque según lo
que entiendo yo creo que si quieres saber la tecla pulsado en el edit
del Form2 en el Form1 no va a ser posible, lo que si puede ser posible
es saber que valor tiene el edit del Form2 cuando se cierra, pero para
eso tienes que emplear una Data que contenga dicho valor de retorno.
Mário Angelini escribió:
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
Todo esto es en el formulario que dispara el evento pero no se puede
aplicar en otro formulario.
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
LASTKEY()
Mario.
Si quieres saber que tecla se pulso en Form2. Podes usar una variable en
Form1 y modificarla en Form2.
Por ej.
En Form1
DATA TeclaPulsada
TForm2():New(Self):ShowModal() // por ej.
y usas el valor cuando lo necesites, despues de volver de Form2.
y en Form2
METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
::oParent:TeclaPulsada := nKey
Por favor, corriganme los que saben si esto no es posible.
Juan
"Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
news:[email=49fef28b@svctag-j7w3v3j....]49fef28b@svctag-j7w3v3j....[/email]
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
Si quieres saber que tecla se pulso en Form2. Podes usar una variable en
Form1 y modificarla en Form2.
Por ej.
En Form1
DATA TeclaPulsada
TForm2():New(Self):ShowModal() // por ej.
y usas el valor cuando lo necesites, despues de volver de Form2.
y en Form2
METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
::oParent:TeclaPulsada := nKey
Por favor, corriganme los que saben si esto no es posible.
Juan
"Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
news:[email=49fef28b@svctag-j7w3v3j....]49fef28b@svctag-j7w3v3j....[/email]
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
LASTKEY()
José, era isto mesmo que voce mencionou.
Mas encontrei a seguinte solução:
Trabalho com um Form pai (padre) que chama os
Form filhos (hijos). Se o Form filho não for
totalmente preenchido, por exemplo, no caso de um ESC
retorna ao Form pai e não deixa seguir para o próximo passo.
Então, fiz uma função com uma variável static.
Toda vez que chamo um novo Form informo que
a variavel é .F.;
Somente após concluido os passos daquele Form informo
que a é .T.;
Se voltar .F. sei que os dados daquele Form não foram
totalmente preenchidos e não deixo prosseguir.
Está funcionando eu como queria.
Agradeço sua atenção.
Mário
Mas encontrei a seguinte solução:
Trabalho com um Form pai (padre) que chama os
Form filhos (hijos). Se o Form filho não for
totalmente preenchido, por exemplo, no caso de um ESC
retorna ao Form pai e não deixa seguir para o próximo passo.
Então, fiz uma função com uma variável static.
Toda vez que chamo um novo Form informo que
a variavel é .F.;
Somente após concluido os passos daquele Form informo
que a é .T.;
Se voltar .F. sei que os dados daquele Form não foram
totalmente preenchidos e não deixo prosseguir.
Está funcionando eu como queria.
Agradeço sua atenção.
Mário
LASTKEY()
Juan, desculpa meu pouco conhecimento com DATA.
Mas como ler o valor de TeclaPulsada em Form1?
::olabel1:ctext:= STR(TeclaPulsada)
Grato.
Mário
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escreveu na mensagem
news:49ff2e4f$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Mario.
> Si quieres saber que tecla se pulso en Form2. Podes usar una variable en
> Form1 y modificarla en Form2.
> Por ej.
> En Form1
>
> DATA TeclaPulsada
>
> TForm2():New(Self):ShowModal() // por ej.
>
> y usas el valor cuando lo necesites, despues de volver de Form2.
>
>
> y en Form2
>
> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
> ::oParent:TeclaPulsada := nKey
>
> Por favor, corriganme los que saben si esto no es posible.
>
> Juan
>
>
> "Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
> news:[email=49fef28b@svctag-j7w3v3j....]49fef28b@svctag-j7w3v3j....[/email]
>> José, estava pesquisando no manual de ajuda e encontrei a informação:
>>
>> Parametros:
>> <oSender>: Referencia al objeto que provoca el evento
>> <nKey>: Código de la tecla tipo carácter pulsada
>> <nFlags>: Información adicional sobre la pulsación
>>
>> Valor Retorno:
>> <Nil>: Sigue el procesamiento por defecto de Windows
>> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
>> hubiera llegada a pulsar ninguna tecla
>>
>>
>> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
>> pegar o retorno:
>>
>> Form1:
>> TEdit1
>> .carrego Form2
>> .digito ESC no campo TEdit1 do Form2
>> .o retorno deverá ser 0 pois não digitei nada.
>> .qual a sintaxe para pegar este o retorno no Form1?
>>
>>
>> Form2:
>> TEdit1
>
>
Mas como ler o valor de TeclaPulsada em Form1?
::olabel1:ctext:= STR(TeclaPulsada)
Grato.
Mário
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escreveu na mensagem
news:49ff2e4f$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Mario.
> Si quieres saber que tecla se pulso en Form2. Podes usar una variable en
> Form1 y modificarla en Form2.
> Por ej.
> En Form1
>
> DATA TeclaPulsada
>
> TForm2():New(Self):ShowModal() // por ej.
>
> y usas el valor cuando lo necesites, despues de volver de Form2.
>
>
> y en Form2
>
> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
> ::oParent:TeclaPulsada := nKey
>
> Por favor, corriganme los que saben si esto no es posible.
>
> Juan
>
>
> "Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
> news:[email=49fef28b@svctag-j7w3v3j....]49fef28b@svctag-j7w3v3j....[/email]
>> José, estava pesquisando no manual de ajuda e encontrei a informação:
>>
>> Parametros:
>> <oSender>: Referencia al objeto que provoca el evento
>> <nKey>: Código de la tecla tipo carácter pulsada
>> <nFlags>: Información adicional sobre la pulsación
>>
>> Valor Retorno:
>> <Nil>: Sigue el procesamiento por defecto de Windows
>> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
>> hubiera llegada a pulsar ninguna tecla
>>
>>
>> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
>> pegar o retorno:
>>
>> Form1:
>> TEdit1
>> .carrego Form2
>> .digito ESC no campo TEdit1 do Form2
>> .o retorno deverá ser 0 pois não digitei nada.
>> .qual a sintaxe para pegar este o retorno no Form1?
>>
>>
>> Form2:
>> TEdit1
>
>
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
LASTKEY()
Saludos:
Mário Angelini escribió:
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
A esta cuestión te ha respondido en su correo Jose F. Gimenez
En Form2 al botón aceptar ponle en propiedades el resultado nModalResult
:= mrOK
Cuando cierras el formulario pregunta por ese valor
IF oForm2:ShowModal() == mrOK
...
ELSE
...
ENDIF
o:
oForm2:ShowModal()
IF oForm2:nModalResult == mrOK
// He puesto algo en TEdit
ELSE
// He salido del formulario con otra tecla (ESC, Botón Cerrar, "X")
ENDIF
Si quieres que no se active el botón Aceptar hasta que los Edit contenga
valores usa el evento del formulario OnCheckState
METHOD FormCheckState( oSender ) CLASS TFormCensos
** Si el Browse no esta vacio
IF ::oDBBwViejo:KeyCount() > 0
//::oBTNuevo:lEnabled := .T.
::oBTLeerChip:lEnabled := .T. // activo botón
ELSE // está vacio
//::oBTNuevo:lEnabled := .F.
::oBTLeerChip:lEnabled := .F. // desactivo botón
ENDIF
** Si el Browse no esta vacio
IF ::oDBBwNuevo:KeyCount() > 0
::oBTGrabar:lEnabled := .T. // activo botón
ELSE
::oBTGrabar:lEnabled := .F. // desactivo botón
ENDIF
RETURN Nil
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
Mário Angelini escribió:
> José, estava pesquisando no manual de ajuda e encontrei a informação:
>
> Parametros:
> <oSender>: Referencia al objeto que provoca el evento
> <nKey>: Código de la tecla tipo carácter pulsada
> <nFlags>: Información adicional sobre la pulsación
>
> Valor Retorno:
> <Nil>: Sigue el procesamiento por defecto de Windows
> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
> hubiera llegada a pulsar ninguna tecla
>
>
> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
> pegar o retorno:
>
A esta cuestión te ha respondido en su correo Jose F. Gimenez
En Form2 al botón aceptar ponle en propiedades el resultado nModalResult
:= mrOK
Cuando cierras el formulario pregunta por ese valor
IF oForm2:ShowModal() == mrOK
...
ELSE
...
ENDIF
o:
oForm2:ShowModal()
IF oForm2:nModalResult == mrOK
// He puesto algo en TEdit
ELSE
// He salido del formulario con otra tecla (ESC, Botón Cerrar, "X")
ENDIF
Si quieres que no se active el botón Aceptar hasta que los Edit contenga
valores usa el evento del formulario OnCheckState
METHOD FormCheckState( oSender ) CLASS TFormCensos
** Si el Browse no esta vacio
IF ::oDBBwViejo:KeyCount() > 0
//::oBTNuevo:lEnabled := .T.
::oBTLeerChip:lEnabled := .T. // activo botón
ELSE // está vacio
//::oBTNuevo:lEnabled := .F.
::oBTLeerChip:lEnabled := .F. // desactivo botón
ENDIF
** Si el Browse no esta vacio
IF ::oDBBwNuevo:KeyCount() > 0
::oBTGrabar:lEnabled := .T. // activo botón
ELSE
::oBTGrabar:lEnabled := .F. // desactivo botón
ENDIF
RETURN Nil
> Form1:
> TEdit1
> .carrego Form2
> .digito ESC no campo TEdit1 do Form2
> .o retorno deverá ser 0 pois não digitei nada.
> .qual a sintaxe para pegar este o retorno no Form1?
>
>
> Form2:
> TEdit1
LASTKEY()
José
No Form2 não tem botão porisso não foi possível usar esta sugestão.
A rotina é assim: no Form2 tenho 3 Edit e em qualquer pode retornar para
o Form1 com ESC. Se os 3 foram preenchido corretamento retorna com ENTER e
prossegue no Form1.
Outra solução seria, ao retornar conferir se os Edit são válidos (foram
preenchidos corretamente) e prosseguir ou não.
Mas já encontrei uma alternativa conforme mencionei acima.
Obrigado pela atenção.
Mário
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escreveu
na mensagem news:[email=49ff3225@svctag-j7w3v3j....]49ff3225@svctag-j7w3v3j....[/email]
> Saludos:
>
> Mário Angelini escribió:
>> José, estava pesquisando no manual de ajuda e encontrei a informação:
>>
>> Parametros:
>> <oSender>: Referencia al objeto que provoca el evento
>> <nKey>: Código de la tecla tipo carácter pulsada
>> <nFlags>: Información adicional sobre la pulsación
>>
>> Valor Retorno:
>> <Nil>: Sigue el procesamiento por defecto de Windows
>> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
>> hubiera llegada a pulsar ninguna tecla
>>
>>
>> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
>> pegar o retorno:
>>
> A esta cuestión te ha respondido en su correo Jose F. Gimenez
>
> En Form2 al botón aceptar ponle en propiedades el resultado nModalResult
> := mrOK
>
> Cuando cierras el formulario pregunta por ese valor
>
> IF oForm2:ShowModal() == mrOK
> ...
> ELSE
> ...
> ENDIF
>
> o:
>
> oForm2:ShowModal()
> IF oForm2:nModalResult == mrOK
> // He puesto algo en TEdit
> ELSE
> // He salido del formulario con otra tecla (ESC, Botón Cerrar,
> "X")
> ENDIF
>
> Si quieres que no se active el botón Aceptar hasta que los Edit contenga
> valores usa el evento del formulario OnCheckState
> METHOD FormCheckState( oSender ) CLASS TFormCensos
> ** Si el Browse no esta vacio
> IF ::oDBBwViejo:KeyCount() > 0
> //::oBTNuevo:lEnabled := .T.
> ::oBTLeerChip:lEnabled := .T. // activo botón
> ELSE // está vacio
> //::oBTNuevo:lEnabled := .F.
> ::oBTLeerChip:lEnabled := .F. // desactivo botón
> ENDIF
> ** Si el Browse no esta vacio IF ::oDBBwNuevo:KeyCount() > 0
> ::oBTGrabar:lEnabled := .T. // activo botón
> ELSE
> ::oBTGrabar:lEnabled := .F. // desactivo botón
> ENDIF
>
> RETURN Nil
>
>> Form1:
>> TEdit1
>> .carrego Form2
>> .digito ESC no campo TEdit1 do Form2
>> .o retorno deverá ser 0 pois não digitei nada.
>> .qual a sintaxe para pegar este o retorno no Form1?
>>
>>
>> Form2:
>> TEdit1
No Form2 não tem botão porisso não foi possível usar esta sugestão.
A rotina é assim: no Form2 tenho 3 Edit e em qualquer pode retornar para
o Form1 com ESC. Se os 3 foram preenchido corretamento retorna com ENTER e
prossegue no Form1.
Outra solução seria, ao retornar conferir se os Edit são válidos (foram
preenchidos corretamente) e prosseguir ou não.
Mas já encontrei uma alternativa conforme mencionei acima.
Obrigado pela atenção.
Mário
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escreveu
na mensagem news:[email=49ff3225@svctag-j7w3v3j....]49ff3225@svctag-j7w3v3j....[/email]
> Saludos:
>
> Mário Angelini escribió:
>> José, estava pesquisando no manual de ajuda e encontrei a informação:
>>
>> Parametros:
>> <oSender>: Referencia al objeto que provoca el evento
>> <nKey>: Código de la tecla tipo carácter pulsada
>> <nFlags>: Información adicional sobre la pulsación
>>
>> Valor Retorno:
>> <Nil>: Sigue el procesamiento por defecto de Windows
>> <0>: Se paraliza el procesamiento de la tecla. El efecto es como si no se
>> hubiera llegada a pulsar ninguna tecla
>>
>>
>> Este valor de retorno daria para ser tratado. Mas não estou conseguindo
>> pegar o retorno:
>>
> A esta cuestión te ha respondido en su correo Jose F. Gimenez
>
> En Form2 al botón aceptar ponle en propiedades el resultado nModalResult
> := mrOK
>
> Cuando cierras el formulario pregunta por ese valor
>
> IF oForm2:ShowModal() == mrOK
> ...
> ELSE
> ...
> ENDIF
>
> o:
>
> oForm2:ShowModal()
> IF oForm2:nModalResult == mrOK
> // He puesto algo en TEdit
> ELSE
> // He salido del formulario con otra tecla (ESC, Botón Cerrar,
> "X")
> ENDIF
>
> Si quieres que no se active el botón Aceptar hasta que los Edit contenga
> valores usa el evento del formulario OnCheckState
> METHOD FormCheckState( oSender ) CLASS TFormCensos
> ** Si el Browse no esta vacio
> IF ::oDBBwViejo:KeyCount() > 0
> //::oBTNuevo:lEnabled := .T.
> ::oBTLeerChip:lEnabled := .T. // activo botón
> ELSE // está vacio
> //::oBTNuevo:lEnabled := .F.
> ::oBTLeerChip:lEnabled := .F. // desactivo botón
> ENDIF
> ** Si el Browse no esta vacio IF ::oDBBwNuevo:KeyCount() > 0
> ::oBTGrabar:lEnabled := .T. // activo botón
> ELSE
> ::oBTGrabar:lEnabled := .F. // desactivo botón
> ENDIF
>
> RETURN Nil
>
>> Form1:
>> TEdit1
>> .carrego Form2
>> .digito ESC no campo TEdit1 do Form2
>> .o retorno deverá ser 0 pois não digitei nada.
>> .qual a sintaxe para pegar este o retorno no Form1?
>>
>>
>> Form2:
>> TEdit1
LASTKEY()
> y en Form2
>
> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
> ::oParent:TeclaPulsada := nKey
>
> Por favor, corriganme los que saben si esto no es posible.
>
> Juan
>
Juan, como o ESC no Edit1 é antes de digitar alguma coisa, então
::oParent:TeclaPulsada := nKey
não será carregado.
Então não é possível.
Estou certo?
Mário
>
> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
> ::oParent:TeclaPulsada := nKey
>
> Por favor, corriganme los que saben si esto no es posible.
>
> Juan
>
Juan, como o ESC no Edit1 é antes de digitar alguma coisa, então
::oParent:TeclaPulsada := nKey
não será carregado.
Então não é possível.
Estou certo?
Mário
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
LASTKEY()
Mario
El valor de los DATA en Form1 lo lees asi
::TeclaPulsada, por ej msgbox(::TeclaPulsada), si se pulso ESC, entonces
vale 27.
Dentro de Form2, podes cambiar el valor en Edit1Char(), o en cualquier otro
metodo como OnKeyDown . Podes inicializarlo en FormInitialize() asi
::oParent:TeclaPulsada := 0 o cualquier valor que vos quieras.
O bien en el evento OnClose() del formulario Form2 le pones el valor que vos
quieras.
Saludos
Juan
"Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
news:49ff36ca$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> y en Form2
>>
>> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
>> ::oParent:TeclaPulsada := nKey
>>
>> Por favor, corriganme los que saben si esto no es posible.
>>
>> Juan
>>
>
> Juan, como o ESC no Edit1 é antes de digitar alguma coisa, então
> ::oParent:TeclaPulsada := nKey
> não será carregado.
> Então não é possível.
> Estou certo?
> Mário
>
El valor de los DATA en Form1 lo lees asi
::TeclaPulsada, por ej msgbox(::TeclaPulsada), si se pulso ESC, entonces
vale 27.
Dentro de Form2, podes cambiar el valor en Edit1Char(), o en cualquier otro
metodo como OnKeyDown . Podes inicializarlo en FormInitialize() asi
::oParent:TeclaPulsada := 0 o cualquier valor que vos quieras.
O bien en el evento OnClose() del formulario Form2 le pones el valor que vos
quieras.
Saludos
Juan
"Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
news:49ff36ca$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> y en Form2
>>
>> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
>> ::oParent:TeclaPulsada := nKey
>>
>> Por favor, corriganme los que saben si esto no es posible.
>>
>> Juan
>>
>
> Juan, como o ESC no Edit1 é antes de digitar alguma coisa, então
> ::oParent:TeclaPulsada := nKey
> não será carregado.
> Então não é possível.
> Estou certo?
> Mário
>
LASTKEY()
Juan:
Comprendido. Funcionou perfeito.
Gracias.
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escreveu na mensagem
news:49ff4a73$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Mario
> El valor de los DATA en Form1 lo lees asi
> ::TeclaPulsada, por ej msgbox(::TeclaPulsada), si se pulso ESC, entonces
> vale 27.
>
> Dentro de Form2, podes cambiar el valor en Edit1Char(), o en cualquier
> otro metodo como OnKeyDown . Podes inicializarlo en FormInitialize() asi
> ::oParent:TeclaPulsada := 0 o cualquier valor que vos quieras.
> O bien en el evento OnClose() del formulario Form2 le pones el valor que
> vos quieras.
>
> Saludos
> Juan
>
>
>
> "Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
> news:49ff36ca$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> y en Form2
>>>
>>> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
>>> ::oParent:TeclaPulsada := nKey
>>>
>>> Por favor, corriganme los que saben si esto no es posible.
>>>
>>> Juan
>>>
>>
>> Juan, como o ESC no Edit1 é antes de digitar alguma coisa, então
>> ::oParent:TeclaPulsada := nKey
>> não será carregado.
>> Então não é possível.
>> Estou certo?
>> Mário
>>
>
>
Comprendido. Funcionou perfeito.
Gracias.
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escreveu na mensagem
news:49ff4a73$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Mario
> El valor de los DATA en Form1 lo lees asi
> ::TeclaPulsada, por ej msgbox(::TeclaPulsada), si se pulso ESC, entonces
> vale 27.
>
> Dentro de Form2, podes cambiar el valor en Edit1Char(), o en cualquier
> otro metodo como OnKeyDown . Podes inicializarlo en FormInitialize() asi
> ::oParent:TeclaPulsada := 0 o cualquier valor que vos quieras.
> O bien en el evento OnClose() del formulario Form2 le pones el valor que
> vos quieras.
>
> Saludos
> Juan
>
>
>
> "Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
> news:49ff36ca$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> y en Form2
>>>
>>> METHOD Edit1Char( oSender, nKey, nFlags ) CLASS TForm2
>>> ::oParent:TeclaPulsada := nKey
>>>
>>> Por favor, corriganme los que saben si esto no es posible.
>>>
>>> Juan
>>>
>>
>> Juan, como o ESC no Edit1 é antes de digitar alguma coisa, então
>> ::oParent:TeclaPulsada := nKey
>> não será carregado.
>> Então não é possível.
>> Estou certo?
>> Mário
>>
>
>