Página 1 de 1

Saludos..... y consultas

Publicado: Sab Jul 16, 2005 11:17 am
por vily
Hola a todos.
He probado la beta 3 y ahora acabo de instalar la beta 4 y realmente, Xailer
tiene muy buena pinta, he trabajado durante años con Clipper 5.2 y he hecho
algo en Alaska, pero creo Xailer llegará muy lejos.
Comentaros algunas dudas que me he encontrado haciendo pruebas:
1- Como puedo controlar las teclas de función, por ejemplo en un edit ,
o que al pulsar F10 en cualquier parte de una aplicación se abra un cajón
portamonedas. He intentado utilizar el evento OnChar en los edits y en el
formulario, pero no se lanza cuando pulsas una tecla e función o una
combinación de teclas con Crt o Alt.
2- Estoy utilizando Tfolder para organizar los datos en un formulario,
pero quiero que estas pestañas sean dinámicas, es decir, que aparezcan y
desaparezcan según convenga, no tengo problema al añadir las nuevas, pero no
encuentro la manera de cerrar una ya creada, puedo eliminar su contenido con
"oFolderPage1:End()" pero la pestaña no se elimina.
3- Como puedo hacer que un botón tenga una tecla rápida, por ejemplo
Alt+A para aceptar o Esc para cancelar.
Disculpar si me enrollado mucho.
Muchas gracias y enhorabuena.
Saludos
J.Vilán.

Saludos..... y consultas

Publicado: Sab Jul 16, 2005 2:01 pm
por jfgimenez
José,
> He probado la beta 3 y ahora acabo de instalar la beta 4 y realmente,
> Xailer
> tiene muy buena pinta, he trabajado durante años con Clipper 5.2 y he
> hecho
> algo en Alaska, pero creo Xailer llegará muy lejos.
Gracias.
> 1- Como puedo controlar las teclas de función, por ejemplo en un edit
> ,
> o que al pulsar F10 en cualquier parte de una aplicación se abra un cajón
> portamonedas. He intentado utilizar el evento OnChar en los edits y en el
> formulario, pero no se lanza cuando pulsas una tecla e función o una
> combinación de teclas con Crt o Alt.
OnChar sólo se dispara cuando la tecla que se ha pulsado tiene un código
ASCII, pero las teclas de función, de movimiento y de cambio no lo disparan.
El que sí se dispara siempre es OnKeyDown, exceptuando cuando se pulsa algún
acelerador o alguna combinación "Alt + loquesea". Por supuesto, si la tecla
pulsada es alguna tecla que gestiona el control, el evento no se dispara
(p.ej., si pulsas la barra espaciadora sobre un botón, se dispara el
OnClick, pero no el OnKeyDown ni el OnChar).
Mi consejo es que escribas el evento OnKeyDown del formulario, ya que todas
las teclas que no procesan los controles van a parar al formulario. Ahí
puedes también controlar qué control es quien tiene el foco. P.ej.:
METHOD FormKeyDown( oSender, nKey, nFlags ) CLASS TForm1
IF lAnd( GetKeyState( VK_CONTROL ), 0x80 ) // Teclas con Ctrl
IF nKey == Asc( "N" ) // Ctrl+N Nuevo
...
RETURN 0
ENDIF
ELSE
IF nKey == VK_F9 .AND. ::oActiveControl == ::oEdit1
// Si se ha pulsado F9 estando en oEdit1
RETURN 0
ENDIF
ENDIF
RETURN Nil
Nota: cuando se procesa una tecla es conveniente retornar 0 para evitar que
Xailer o el API continuen intentando procesarla.
Por otro lado también tenemos la función SetKey(), que permite asignar
teclas que van a funcionar en toda la aplicación, como se hacía con Clipper.
La única diferencia es que nosotros tenemos un parámetro más en segundo
lugar. La sintaxis es:
SetKey( <nKey>, <nShift>, [<bCode>] ) -> <bOldCode>
Y un ejemplo:
SetKey( Asc( "C" ), FCONTROL + FALT, {|| Calculator() } )
Esto mostraría la calculadora de Xailer pulsando Ctr+Alt+C desde cualquier
punto de la aplicación.
> 2- Estoy utilizando Tfolder para organizar los datos en un formulario,
> pero quiero que estas pestañas sean dinámicas, es decir, que aparezcan y
> desaparezcan según convenga, no tengo problema al añadir las nuevas, pero
> no
> encuentro la manera de cerrar una ya creada, puedo eliminar su contenido
> con
> "oFolderPage1:End()" pero la pestaña no se elimina.
Utiliza ::oFolderPage1:Delete()
> 3- Como puedo hacer que un botón tenga una tecla rápida, por ejemplo
> Alt+A para aceptar o Esc para cancelar.
Los atajos de teclado (shortcuts) son combinaciones Alt + ?, y se ponen
simplemente anteponiendo un & al caracter que quieras del cText del control.
P.ej. "&Aceptar".
Por otro lado, si al botón le pones la propiedad lCancel := .T., entonces
cuando pulses Esc en ese formulario se disparará ese botón. De la misma
forma, si pones lDefault := .T., es la tecla Enter la que dispara ese botón.
--
Un saludo,
José F. Giménez

Saludos..... y consultas

Publicado: Sab Jul 16, 2005 4:48 pm
por vily
Muchas gracias, lo probaré
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=42d8f719@ozsrvnegro.ozlan.local...]42d8f719@ozsrvnegro.ozlan.local...[/email]
>
> José,
>
> > He probado la beta 3 y ahora acabo de instalar la beta 4 y realmente,
> > Xailer
> > tiene muy buena pinta, he trabajado durante años con Clipper 5.2 y he
> > hecho
> > algo en Alaska, pero creo Xailer llegará muy lejos.
>
> Gracias.
>
>
> > 1- Como puedo controlar las teclas de función, por ejemplo en un
edit
> > ,
> > o que al pulsar F10 en cualquier parte de una aplicación se abra un
cajón
> > portamonedas. He intentado utilizar el evento OnChar en los edits y en
el
> > formulario, pero no se lanza cuando pulsas una tecla e función o una
> > combinación de teclas con Crt o Alt.
>
> OnChar sólo se dispara cuando la tecla que se ha pulsado tiene un código
> ASCII, pero las teclas de función, de movimiento y de cambio no lo
disparan.
> El que sí se dispara siempre es OnKeyDown, exceptuando cuando se pulsa
algún
> acelerador o alguna combinación "Alt + loquesea". Por supuesto, si la
tecla
> pulsada es alguna tecla que gestiona el control, el evento no se dispara
> (p.ej., si pulsas la barra espaciadora sobre un botón, se dispara el
> OnClick, pero no el OnKeyDown ni el OnChar).
>
> Mi consejo es que escribas el evento OnKeyDown del formulario, ya que
todas
> las teclas que no procesan los controles van a parar al formulario. Ahí
> puedes también controlar qué control es quien tiene el foco. P.ej.:
>
> METHOD FormKeyDown( oSender, nKey, nFlags ) CLASS TForm1
>
> IF lAnd( GetKeyState( VK_CONTROL ), 0x80 ) // Teclas con Ctrl
> IF nKey == Asc( "N" ) // Ctrl+N Nuevo
> ...
> RETURN 0
> ENDIF
> ELSE
> IF nKey == VK_F9 .AND. ::oActiveControl == ::oEdit1
> // Si se ha pulsado F9 estando en oEdit1
> RETURN 0
> ENDIF
> ENDIF
>
> RETURN Nil
>
> Nota: cuando se procesa una tecla es conveniente retornar 0 para evitar
que
> Xailer o el API continuen intentando procesarla.
>
>
> Por otro lado también tenemos la función SetKey(), que permite asignar
> teclas que van a funcionar en toda la aplicación, como se hacía con
Clipper.
> La única diferencia es que nosotros tenemos un parámetro más en segundo
> lugar. La sintaxis es:
>
> SetKey( <nKey>, <nShift>, [<bCode>] ) -> <bOldCode>
>
> Y un ejemplo:
>
> SetKey( Asc( "C" ), FCONTROL + FALT, {|| Calculator() } )
>
> Esto mostraría la calculadora de Xailer pulsando Ctr+Alt+C desde cualquier
> punto de la aplicación.
>
>
> > 2- Estoy utilizando Tfolder para organizar los datos en un
formulario,
> > pero quiero que estas pestañas sean dinámicas, es decir, que aparezcan y
> > desaparezcan según convenga, no tengo problema al añadir las nuevas,
pero
> > no
> > encuentro la manera de cerrar una ya creada, puedo eliminar su contenido
> > con
> > "oFolderPage1:End()" pero la pestaña no se elimina.
>
> Utiliza ::oFolderPage1:Delete()
>
>
> > 3- Como puedo hacer que un botón tenga una tecla rápida, por ejemplo
> > Alt+A para aceptar o Esc para cancelar.
>
> Los atajos de teclado (shortcuts) son combinaciones Alt + ?, y se ponen
> simplemente anteponiendo un & al caracter que quieras del cText del
control.
> P.ej. "&Aceptar".
>
> Por otro lado, si al botón le pones la propiedad lCancel := .T., entonces
> cuando pulses Esc en ese formulario se disparará ese botón. De la misma
> forma, si pones lDefault := .T., es la tecla Enter la que dispara ese
botón.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
>