FoxPro/Visual FoxPro - Volver al foco anterior

   
Vista:

Volver al foco anterior

Publicado por Marcelo (171 intervenciones) el 28/05/2009 18:32:44
Hola a todos, tengo que solucionare este problema supongamos que estoy con el foco en un textbox y mediante el mouse hacen click en un combobox yo quiero que cuando pierda el foco el combobox el cursor pase al textbox que estaba. esto no lo puedo lograr con poner en el valid del combobox return(-1) porque me vuelve al anterior segun la lista del tabulador.
ejemplificando:
si la lista de tabulacion tiene este orden:
textbox1
textbox2
combobox1
textbox3
si el foco esta en textbox3 y hacen click en combobox1 con return(-1) el foco pasa a textbox2 y yo quiero que vuelva a textbox3 pero no puedo usar setfocus porque la realidad es que no se en cual de los textbox puede estar el cursor antes de llegar al combobox1
espero que se entienda
Gracias por ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Volver al foco anterior

Publicado por neo (1601 intervenciones) el 28/05/2009 19:10:17
si solo son tres textbox:

En el Load del form:
Public x1
x1=0

en el valid del text1:
x1=1

en el valid del text2:
x1=2

en el valid del text3:
x1=3

Ahora en el valid del Combo:

Do Case
Case x1=1
return -2
case x1=2
return -1
case x1=3
return +1
endcase

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por es_binario (757 intervenciones) el 28/05/2009 19:34:47
Muy bueno a mi me funciono, esa mecánica con los gofocus no me la sabia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por Marcelo (171 intervenciones) el 28/05/2009 20:59:46
gracias por responder pero eso fue un ejemplo no tengo solo 3 textbox hay muchos mas y no puedo aplicar esa tecnica si serviria si puedo identificar con una funcion en que objeto esta el foco de acuerdo a la lista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por neo (1601 intervenciones) el 28/05/2009 21:04:19
Pregunta, porqué es tan importante regresar al textbox anterior despues de validar el combo??

La verdad no me imagino que tipo de entorno sea tu formulario ni a que va dirigido especificamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por Marcelo (171 intervenciones) el 28/05/2009 21:11:48
es un formulario de facturacion al poner un articulo su precio cantidad e ir completando la factura siempre el foco lo mantengo en donde se introduce el codigo del articulo pero en un combo tengo la opcion de cambiar la forma de pago que esta siempre disponible aun cuando intentan cerrar la factura que como tiene otras opciones puede ser que esten agregando una observacion al pie del comprobante y ahi se dan cuenta de que quieren cambiar la forma de pago la idea es que luego de salir del foco del combo no vuelva a articulo sino que vuelva a esa observación esto es para evitar usar tanto el mouse y trabajar mas con el teclado que es mas rapido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por neo (1601 intervenciones) el 28/05/2009 21:38:06
Has pensado si hacer algun tipo de regla para el combo, es decir, que primero ingresen la foma de pago y ya despues los demás cambios...

??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por Marcelo (171 intervenciones) el 28/05/2009 21:45:05
esa opcion no puedo aplicarla solo estoy tratando de hacerle mas facil al operador la forma de facturar, igual gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por neo (1601 intervenciones) el 28/05/2009 21:56:20
oye y estas validando algo en el combo??

es decir, tiene sla posibilidad de usar setfocus()?? si validas algo pues no...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por alberto (399 intervenciones) el 29/05/2009 06:03:55
YO TENGO UN SISTEMA PARA TOMA DE PEDIDOS TELEFONICOS D E UNA CASA DE COMIDAS , Y EL CLIENTE QUERIA USAR SOLO EL TECLADO PORQUE ERA MAS RAPIDO, APARTE EL SIS TEMA VIEJO ESTABA EN COBOL Y NO USABAN EL MOUSE, LO QUE HICE FUE CREAR BOTONES CON TECLA ACELERADORA , POR EJEMPLO

EN EL KEYPRESS DEL CAMPO CODIGO ARTICULO

with thisform
if lastkey() = 27
keybo " {alt+S}" USO KEYBOARD ALT+S PARA EJECUTAR EL BOTON SALIR
endif
if lastkey() = 13
if empty(.pageframe1.page1.text3.value)
messagebox("Debe ingresar un Código","Aviso")
keybo " {alt+G}"
thisform.limpio
endif
select articulo
set order to codint
set dele on
go top
seek alltrim(.pageframe1.page1.text3.value)
*locate rest for articulo.codint = alltrim(.pageframe1.page1.text3.value) nooptimize
if found()
public precme,plista
plista=articulo.p_lista
precme=articulo.preciomed
.pageframe1.page1.text4.value=articulo.desartic
store "PIZZA" to ccdato
if atc(ccdato,.pageframe1.page1.text4.value) > 0
THISFORM.pageframe1.page1.Text14.Visible=.t.
THISFORM.pageframe1.page1.Text15.Visible=.t.
THISFORM.pageframe1.page1.Text16.Visible=.t.
THISFORM.pageframe1.page1.Text17.visible=.t.
THISFORM.pageframe1.page1.LABELtipo.visible=.t.
THISFORM.pageframe1.page1.label20.visible=.t.
THISFORM.pageframe1.page1.label21.visible=.t.
THISFORM.pageframe1.page1.label22.visible=.t.
THISFORM.pageframe1.page1.label23.visible=.t.
THISFORM.pageframe1.page1.label24.visible=.t.

else
THISFORM.pageframe1.page1.Text14.Visible=.f.
THISFORM.pageframe1.page1.Text15.Visible=.f.
THISFORM.pageframe1.page1.Text16.Visible=.f.
THISFORM.pageframe1.page1.Text17.visible=.f.
THISFORM.pageframe1.page1.LABELtipo.visible=.f.
THISFORM.pageframe1.page1.label20.visible=.f.
THISFORM.pageframe1.page1.label21.visible=.f.
THISFORM.pageframe1.page1.label22.visible=.f.
THISFORM.pageframe1.page1.label23.visible=.f.
THISFORM.pageframe1.page1.label24.visible=.f.


endif
*-----------
store "TARTA" to ccda
if atc(ccda,.pageframe1.page1.text4.value) > 0
THISFORM.pageframe1.page1.Text15.Visible=.t.
THISFORM.pageframe1.page1.Text17.visible=.t.
THISFORM.pageframe1.page1.label20.visible=.t.
THISFORM.pageframe1.page1.label23.visible=.t.
THISFORM.pageframe1.page1.label24.visible=.t.

else


endif
*-----------
.pageframe1.page1.text12.value=articulo.p_lista

else
messagebox("No existe el Artículo !!","Aviso")
keybo " {alt+G}"
thisform.limpio
* .pageframe1.page1.text4.setfocus
return

endif
endif

endwith

USA KEYBOARD CON BOTONES CON TECLAS ACELERADORAS , A MI ME FUNCIONA GENIAL

SET DATE BRITISH
SET DELETED ON

CREATE CURSOR temporal1 ;
( codarti C(10),descri C(98), cantidad N(5),precio N(8,2),total N(8,2), nro N(10) )

SET MESSAGE TO [Formulario de Toma Pedidos]
thisform.pageframe1.page1.grid1.recordsource="temporal1"
Thisform.Pageframe1.Page1.grid1.column1.width=60
Thisform.Pageframe1.Page1.grid1.column2.width=460

Thisform.Pageframe1.Page1.grid1.column3.width=53

Thisform.Pageframe1.Page1.grid1.column4.width=80
Thisform.Pageframe1.Page1.grid1.column5.width=80
Thisform.Pageframe1.Page1.grid1.column6.width=80


Thisform.Pageframe1.Page1.grid1.column1.HEADER1.caption="Cód. Art."
Thisform.Pageframe1.Page1.grid1.column2.HEADER1.caption="Detalle"
Thisform.Pageframe1.Page1.grid1.column3.HEADER1.caption="Cantidad"
Thisform.Pageframe1.Page1.grid1.column4.HEADER1.caption="Precio"
Thisform.Pageframe1.Page1.grid1.column5.HEADER1.caption="Total"
Thisform.Pageframe1.Page1.grid1.column6.HEADER1.caption="Pedido Nro"

Thisform.Pageframe1.Page1.grid1.column3.HEADER1.Backcolor=rgb(0,128,255)
Thisform.Pageframe1.Page1.grid1.column1.HEADER1.Backcolor=rgb(0,128,255)
Thisform.Pageframe1.Page1.grid1.column2.HEADER1.Backcolor=rgb(0,128,255)
Thisform.Pageframe1.Page1.grid1.column4.HEADER1.Backcolor=rgb(0,128,255)
Thisform.Pageframe1.Page1.grid1.column5.HEADER1.Backcolor=rgb(0,128,255)
Thisform.Pageframe1.Page1.grid1.column6.HEADER1.Backcolor=rgb(0,128,255)

Thisform.Pageframe1.Page1.grid1.readonly=.t.
Thisform.Pageframe1.Page1.grid1.deletemark=.f.
select temporal1
zap

select idpedido
n=idpedido.nroorden + 1
Thisform.Pageframe1.Page1.text1.value=n
Thisform.Pageframe1.Page1.text2.value=date()
Thisform.Pageframe1.Page1.text11.value=0.00
thisform.pageframe1.page1.text7.value=""
Thisform.Pageframe1.Page1.text3.setfocus()

* BOTONES F5 <CLIENTES F6 <BORRAR ............
on key label F5 keybo " {alt+C}"
on key label F6 keybo " {alt+B}"
on key label F4 keybo " {alt+O}"
on key label F10 keybo " {alt+F}"
on key label F8 keybo " {alt+R}"
on key label F3 keybo " {alt+G}"

public noesta
noesta=0

*-
THISFORM.pageframe1.page1.Text14.Visible=.f.
THISFORM.pageframe1.page1.Text15.Visible=.f.
THISFORM.pageframe1.page1.Text16.Visible=.f.
THISFORM.pageframe1.page1.Text17.visible=.f.
THISFORM.pageframe1.page1.LABELtipo.visible=.f.
THISFORM.pageframe1.page1.label20.visible=.f.
THISFORM.pageframe1.page1.label21.visible=.f.
THISFORM.pageframe1.page1.label22.visible=.f.
THISFORM.pageframe1.page1.label23.visible=.f.
THISFORM.pageframe1.page1.label24.visible=.f.

SALUDOS ESPERO TE SIRVA DE ALGO
*THISFORM.pageframe1.page1.text18.value=""
*-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por kong (681 intervenciones) el 29/05/2009 10:09:46
lo que dice neo es lo mas acertado.
utiliza el setfocus(), y si tienes algo en el valid, pues pasalo a (pj.) al Keypress o al lostfocus()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por Marcelo (171 intervenciones) el 29/05/2009 20:01:04
a ver:
el setfocus no sirve si no se cual fue el objeto que tenia el foco antes de este.
si yo en el combo puedo usar gotfocus y saber quien me pasa el foco entonces en el lostfocus puedo decir que vaya al foco pero no se quien me pasa el foco o al menos no tengo ninguna funcion que me permita sober eso.
de todos modos gracias a todos por preocuparse. Las teclas de funciones ya las estoy usando pero la idea es no tener la necesidad de usarlas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por neo (1601 intervenciones) el 29/05/2009 21:33:54
y porque no posteas el form para que de alguna manera darte opciones a una posible solucion.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por es_binario (757 intervenciones) el 30/05/2009 07:24:19
De acuerdo con neo, postea el form, y la solucion podria estar en crear una clase combo que devuelva el foco al ultimo control que la tenia usando el for each en objects del form. pero si posteas el form, obiviamente el que te lo regrese, te lo regresara funcionando.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Volver al foco anterior

Publicado por elseif (6 intervenciones) el 20/07/2009 16:25:23
Define una variable y en esta pones el valor del tex (lostfocus) y una vez que quieres regresar el focus (creo que eso es lo quieres hacer) control.setfocus

vari_Ext=80

control="thisform.tex"+strtran(str(vari_Ext,3)," ","0")+".setfocus"
&control

siempre y cuanfdo los text tengan el nombre por default
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar