Set Focus

132 views
Skip to first unread message

Arnaldo Toledano

unread,
Jan 16, 2013, 1:51:16 PM1/16/13
to publice...@googlegroups.com
Se me presenta un problema que oportunamente lo indique.
Tengo código que dice
thisform.pf1.page2.cliente.codigo.setfocus()
Donde CÓDIGO es un TEXBOX de una CLASE.

Si en CÓDIGO paso a otro FORM, en mi caso "Busco_Cliente", el FORM  Busco_Cliente pierde el FOCO, puesto
que en su momento se lo DI A thisform.pf1.page2.cliente.codigo.setfocus()

La pregunta es .
Como hago para SACAR de foco al texbox CÓDIGO ????

--
Arnaldo Toledano
Tesys Informática
Córdoba
Argentina

Edgar Acevedo

unread,
Jan 16, 2013, 1:54:18 PM1/16/13
to publice...@googlegroups.com
¿Y si usaras el  WHEN <condicion>  con un  RETURN .F. en el textbox para que NO AGARRE foco ?


--
 
 

Arnaldo Toledano

unread,
Jan 16, 2013, 1:56:40 PM1/16/13
to publice...@googlegroups.com
Como seria eso ?
No alcanzo a comprenderlo.


Arnaldo
--
 
 

Edgar Acevedo

unread,
Jan 16, 2013, 2:02:18 PM1/16/13
to publice...@googlegroups.com
En el evento WHEN del Textbox que NO QUERES que agarre foco, si queres que NUNCA agarre foco ponele:

RETURN .F.

Si queres que agarre foco pero SOLO CUANDO cierta condición se cumple, ponéle un código así:

IF  <condición>
   RETURN .T.      && agarrará foco
ELSE
   RETURN .F.      && NO agarrará foco
ENDIF

Salu2,


Edgar


--
 
 

Arnaldo Toledano

unread,
Jan 16, 2013, 2:06:11 PM1/16/13
to publice...@googlegroups.com
Gracias Edgar.
Ahora entendi.
Lo pondre en practica y te cuento.


Arnaldo

Arnaldo Toledano

unread,
Jan 16, 2013, 2:23:23 PM1/16/13
to publice...@googlegroups.com
No puedo.
El evento WHEN ocurre ANTES que el TEXBOX tome el FOCO.
En mi caso ya lo ha tomado.

Te pongo un ejemplo.


Desde la DESCRIPCIÓN de compras, (también puede ser del código de Compras), paso a CÓDIGO del proveedor con un SETFOCUS()
Una vez tomado el FOCO.
Puedo ingresar el numero 2 y darle ENTER.
Si existen MUCHOS Proveedores que contengan el 2 como código (utilizo un Like "%2%" para la búsqueda), se me abre otro
formulario para realizar la búsqueda del PROVEEDOR.
Y acá es donde se produce el problema.
Como el FOCO estaba en CÓDIGO del proveedor, el FORM BÚSQUEDA, pierde el FOCO.

No puedo UTILIZAR el WHEN, puesto que de acuerdo a la ayuda del VFP, el evento WHEN ocurre ANTES de TOMAR EL FOCO.

Se entiende ???
Gracias Edgard.

Arnaldo Toledano




El 16/01/2013 04:02 p.m., Edgar Acevedo escribió:

ZeRoberto

unread,
Jan 16, 2013, 2:27:17 PM1/16/13
to publice...@googlegroups.com
Y si le das KEYBOARD "TAB}"

Saludos

--
 
 

setfocus.jpg

Arnaldo Toledano

unread,
Jan 16, 2013, 2:30:30 PM1/16/13
to publice...@googlegroups.com
El TAB lo toma en la CLASE.
Es decir, dentro de la clase hay cuatro elementos factibles de tomar FOCO, al pulsar TAB, solo
toma los de la CLASE, no pasa a la siguiente clase.

Gracias ZeRoberto.

Arnaldo

Fox Friend

unread,
Jan 16, 2013, 3:11:23 PM1/16/13
to publice...@googlegroups.com
Arnaldo,

Si estas usando 2 forms y deseas regresar el enfoque al primero, creo que era de esta forma.

1. Configuras el 2o. form como Modal.
2. Ejecutas Do form "hijo.scx" desde el form padre, donde lo requieras.
3. Al cerrar el form hijo liberalo de la memoria con release()
u ocultalo con hide() segun como lo desees usar.
4. Desde el form padre, pon el enfoque donde desees.

Es decir, el código continúa despues de cerrar el form hijo.. de ahi que puedas devolver el enfoque al control que corresponda, una vez que cerraste el form hijo.

Saludos!


El 16 de enero de 2013 12:51, Arnaldo Toledano <arnaldo....@gmail.com> escribió:

FidelJ

unread,
Jan 16, 2013, 3:37:35 PM1/16/13
to publice...@googlegroups.com, arnaldo....@gmail.com
Arnaldo, en qué evento tienes el setfocus y en qué evento la llamada al Form Busco_Cliente?
Busco_Cliente es Modal?

Claudio Luna

unread,
Jan 17, 2013, 6:49:25 AM1/17/13
to Comunidad de Visual Foxpro en Español
Arnaldo,
Supongo que el form BUSCO_CLIENTE lo llamas de varios lados,Una alternativa sería "detectar" quien llamo a BUSCO_CLIENTE si hicieras algo como do form BUSCO_CLIENTE with thisform
y en el init del BUSCO_CLIENTE
Parameters oForm
if !isnull(oForm)
    if oForm.name ="el formulario llamador"
         thisform.tutxt.setfocus
    endif
endif
Esto es lo mismo que usar la tecnica del oparentform como ya se ha explicado antes en el foro y en portalfox
http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=94
Espero que te sirva.
Saludos
Claudio


--
 
 

Víctor Hugo Espínola Domínguez

unread,
Jan 17, 2013, 9:09:38 AM1/17/13
to publicesvfoxpro

El 16 de enero de 2013 15:23, Arnaldo Toledano <arnaldo....@gmail.com> escribió:
Como el FOCO estaba en CÓDIGO del proveedor, el FORM BÚSQUEDA, pierde el FOCO

Hola Arnaldo

Yo tengo un formulario en VFP6 que tiene características similares al tuyo y no tengo problemas con el SetFocus() al llamar al formulario de búsqueda. Inclusive el buscador llama al ABM correspondiente si lo buscado no existe, y todo funciona Ok.

Es más probable que el problema esté en el formulario de búsqueda, verifica las siguientes propiedades del mismo:
1- WindoesType  = 1 - Modal
2- ShowWindows = 1 - En formulario de nivel superior
3- Enabled           = .T.
4- Desktop           = .F.
5- AlwaysOnTop   = .T.

Saludos,
Víctor.

Reply all
Reply to author
Forward
0 new messages