VFP : Uso de On key label

1,446 views
Skip to first unread message

Jairo Miranda

unread,
Nov 9, 2012, 2:37:54 PM11/9/12
to publicesvfoxpro
Hola grupo una pregunta .. 
como puedo usar el on key label para hacer un setfocus a un boton o un click ,  esto no es valido ya que me da error

ON KEY LABEL Thisformset.PTOVENTA.CMDadd.Click()

Gracias por la ayuda

JM 

FidelJ

unread,
Nov 9, 2012, 2:49:47 PM11/9/12
to publice...@googlegroups.com
Puedes utilizar la propiedad del formulario KeyPreview=.t.  y el evento KeyPress con un DO CASE ENDCASE.
En la ayuda de Inkey() tienes los valores posibles de nKeyCode.

Ricardo Pina

unread,
Nov 9, 2012, 2:50:51 PM11/9/12
to Grupo VFP
Hola JAiro
 
ON KEY LABEL UnNombredeLabel Thisformset.PTOVENTA.CMDadd.Click()

Saludos



JM 

--
 
 
 



--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 


clrc

unread,
Nov 9, 2012, 3:11:41 PM11/9/12
to publice...@googlegroups.com
En el procedure del formulario busca KEYPRESS
y coloca este codigo

LPARAMETERS nKeyCode, nShiftAltCtrl

*WAIT WINDOW STR(LASTKEY()) 

IF LASTKEY()=-2    &&F3
 THISFORM.COMMAND1.Click()
ENDIF

IF LASTKEY()=-4    &&F5  
 THISFORM.TEXT1.SETFOCUS()
ENDIF

Robert Martínez

unread,
Nov 9, 2012, 4:29:17 PM11/9/12
to publice...@googlegroups.com
En lo particular no he usado el "on key label" desde que salio VFP 3, para hacer algo similar tienes que usar el evento keypress del formulario cuando abre el evento este te mostrará dos parametros (nKeyCode, nShiftAltCtrl) los cuales toman el valor de la tecla presionada.

Lparameters nKeyCode, nShiftAltCtrl
** 1= SHIFT
** 2= CTRL
** 4= ALT

Do Case
    Case  nShiftAltCtrl=0

        Do Case
            Case nKeyCode = -1 && F2
                    thisform.textbox1.CLICK()

            CASE nKeycode = 133  && F11
                    thisform.textbox1.setfocus()
        Endcase
Endcase

Jairo Miranda

unread,
Nov 20, 2012, 2:12:47 PM11/20/12
to publice...@googlegroups.com

 

Este codigo me funciona perfecto , el asunto es que el botón a cual le estoy haciendo  THISFORM.COMMAND1.Click()
no ejecuta la acción del click , solo recibe el enfoque y debo presionar enter para que lo haga.

 

En el botón tengo :

 

    SELECT Detallev

    APPEND BLANK

    REPLACE detallev.ID         WITH Ventas.ID

    REPLACE detallev.NUM_PEDIDO WITH Ventas.NUM_PED

    REPLACE detallev.fecha      WITH Ventas.Fecha

    REPLACE detallev.cubicaje   WITH 1

 

    Thisformset.PTOVENTA.gframes1.Page1.Grid1.Columns(4).CANTIDAD1.Value = 1

    Thisformset.PTOVENTA.gframes1.Page1.Grid1.Columns(4).CANTIDAD1.Setfocus

 

 

    SET MULTILOCKS ON  && Must be on for table buffering

    = CURSORSETPROP('Buffering', 5, 'Ventas' )  && Enable table buffering

    = TABLEUPDATE(.T.)  && Commits changes

 

    SET MULTILOCKS ON  && Must be on for table buffering

    = CURSORSETPROP('Buffering', 5, 'Detallev' )  && Enable table buffering

    = TABLEUPDATE(.T.)  && Commits changes

    ThisformSet.refresh()

    *Thisformset.PTOVENTA.Gframes1.Page1.Command111.Setfocus

 

Hay alguna manera para que el lo ejecute?

JM

--
 
 
 

Fox Learner

unread,
Nov 20, 2012, 2:18:45 PM11/20/12
to publice...@googlegroups.com
Estimado Jairo,

En qué evento estás haciendo tu llamado al evento click del botón de comando ?...

Saludos!

Jairo Miranda

unread,
Nov 20, 2012, 2:44:02 PM11/20/12
to publice...@googlegroups.com

En el keypres del formulario principal , pero lo solucione asi:

 

   CASE nKeyCode = -3  && F4

        thisformset.PTOVENTA.Gframes1.Page1.Mybnts1.CmdAdd.Setfocus()

        thisformset.PTOVENTA.Gframes1.Page1.Mybnts1.CmdAdd.Click()

        thisformset.PTOVENTA.Gframes1.Page1.Mybnts1.CmdAdd.Valid()

 

JM

 

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Fox Learner
Enviado el: martes, 20 de noviembre de 2012 2:19
Para: publice...@googlegroups.com
Asunto: [vfp] Re: VFP : Uso de On key label

 

Estimado Jairo,

 

En qué evento estás haciendo tu llamado al evento click del botón de comando ?...

 

Saludos!

--
 
 
 

Fox Learner

unread,
Nov 20, 2012, 2:50:34 PM11/20/12
to publice...@googlegroups.com
Ok. Me da gusto que ya lo solucionaste!

Veo que usas formsets aunque la mayoría de los compañeros no lo recomienda, pero solo tu sabes tus ondas..

Saludos!

Jairo Miranda

unread,
Nov 20, 2012, 3:37:41 PM11/20/12
to publice...@googlegroups.com

Convino los FORMSET con el FoxTabs  con la barra de estado le da un aspecto navegable  estilo  QuickBooks

Y realmente nunca he tenido problemas, los forms adicionales los pongo invisibles  y cuando quiero tener acceso a alguna información como una lista de clientes con una grid con búsqueda incremental …

 

  IF ThisFormSet.CLIENTES.Visible

     ThisFormSet. CLIENTES.Hide

  ELSE

     ThisFormSet. CLIENTES.Show

  ENDIF

En un boton que diga ver lista de clientes activos..

 

JM

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Fox Learner
Enviado el: martes, 20 de noviembre de 2012 2:51
Para: publice...@googlegroups.com
Asunto: [vfp] Re: VFP : Uso de On key label

 

Ok. Me da gusto que ya lo solucionaste!

 

Veo que usas formsets aunque la mayoría de los compañeros no lo recomienda, pero solo tu sabes tus ondas..

 

Saludos!

--
 
 
 

Robert Martínez

unread,
Nov 20, 2012, 3:44:00 PM11/20/12
to publice...@googlegroups.com

Perdon que me entrometa en tu problema ya solucionado, pero No comprendo para que usas el setfocus() y el click() y el valid(), si lo pusiste en el evento valid(), solo tienes que invocar el valid(), si lo querias en el evento click solo tenias que poner tus códigos en el evento click() e invocar el evento click() desde el keypress.

En conclusión, si pones tu código en el evento click(), cuando presiones el boton con el click() del mouse, deberia funcionarte perfectamente y al presionar la tecla F4 deberia tambien de ejecutar el click() y tambien tomar el foco.
Reply all
Reply to author
Forward
0 new messages