FoxPro/Visual FoxPro - No me funciona SetFocus

   
Vista:

No me funciona SetFocus

Publicado por DanielVFP (37 intervenciones) el 12/12/2010 15:16:25
Hola a todos.
Mil disculpas x hacer muchas preguntas que puedan resultar simples pero de corazón
no tengo a quien recurrir(hago pruebas,leo la ayuda y busco en la web luego los foros).-
Lo que no puedo lograr es que el campo código que se encuentra en el contenedor
contCampos obtenga el foco, me queda siempre en el botón <Agregar>.-

IF ThisForm.contBotones.bAgregar.Caption = "\<Agregar"
SELECT("vencimientos")
= CURSORSETPROP('Buffering', 3, 'vencimientos' )
APPEND BLANK
ThisForm.SetAll( "Enabled", .F., "CommandButton")
ThisForm.contCampos.Enabled = .T.
ThisForm.contBotones.bAgregar.Caption = "\<Graba"
ThisForm.contBotones.bEditar.Caption = "\<Cancela"
ThisForm.contBotones.bAgregar.Enabled = .T.
ThisForm.contBotones.bEditar.Enabled = .T.
ThisForm.conAyuda.Visible = .T.
ThisForm.contCampos.txtCodigo.SetFocus
ELSE
SELECT("vencimientos")
TABLEUPDATE()
SELECT("auxiliar")
REPLACE auxiliar.gorecno WITH vencimientos.codigo
ThisForm.contBotones.bAgregar.Caption = "\<Agregar"
ThisForm.contBotones.bEditar.Caption = "\<Editar"
ThisForm.conAyuda.Visible = .F.
ThisForm.contCampos.Enabled = .F.
ThisForm.verificatabla
ENDIF
ThisForm.contCampos.Refresh

Espero solucionarlo porque no puedo decirle al operador que se dirija al campo con el mouse.-

Saludos.
Daniel
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:No me funciona SetFocus

Publicado por xx (378 intervenciones) el 12/12/2010 19:02:56
No tiene ningun secreto el envio del foco no lo puedes hacer desde ningun evento VALID o LOSTFOCUS de cualquier objeto, pero en las demas funciona!!, lo que debes tener en cuenta es que antes de recibir el foco un control debe estar habilitado es decir ENABLED=.T. y si esta alojado en un contenedor este tambien.

Es buena costumbre dejar al usuario habilitado solo los controles con los que debe interactuar en ese memento, tambien te recomiendo leas un poquito sobre orden de tabulación (orden de por defecto en el que se ejecutan los controles de un formulario)

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:No me funciona SetFocus

Publicado por DanielVFP (37 intervenciones) el 12/12/2010 19:48:54
Hola
Con respecto a estar habilitado el contenedor y el objeto eso esta correcto, solo que descubrí que otro form con el mismo código pero con botones sin contenedor, funciona.-

seguiremos indagando.-

Saludos y gracias.
Daniel
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:No me funciona SetFocus

Publicado por victor perez (278 intervenciones) el 13/12/2010 00:20:57
Hola.

Todavia no entiendo por que no usas lo bueno de vfp (el ambiente grafico).

Si es correcto tu codigo, significa que solo tienes un formulario donde esta el contenedor. Si es asi, entonces estas llamando bien el setfocus. Si todo el codigo esta en el evento que lo permite. Es decir, como te dice XX si es un lostfocus, valid, y otros, este SETFOCUS no se permite usar.

Saludos,

Victor - Panama-
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:No me funciona SetFocus

Publicado por DanielVFP (12 intervenciones) el 13/12/2010 01:01:50
Hola Doc.
Si te referís a poner imagenes en los controles y no texto es porque es mi primer programa luego lo implementare.-
En cuanto a setfocus estoy practicando y leyendo desde que hice el post y no logro que funcione.-

Seguiré indagando.-

Saludos.
Daniel
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:No me funciona SetFocus

Publicado por xx (378 intervenciones) el 13/12/2010 01:03:41
No se entiende muy bien cual es el problema, si te da un error deberias comentarlo, ahora si simplemente no recibe el foco es quizas como te dije falta habilitar los controles que para tu objeto deberias chequear que este habilitado el:

form &&el formulario
thisform.contCampos && el contenedor
Thisform.contCampos.txtCodigo && el cuado de texto

en el caso que
ThisForm.contCampos.txtCodigo.SetFocus()
esté por ejemplo en el evento click de algun boton deberia funcionar sin problemas

Deberias dar mas información para entender mejor el problema

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:No me funciona SetFocus

Publicado por DanielVFP (37 intervenciones) el 13/12/2010 02:45:03
Hola

No me da ningún error simplemente el foco queda en el botón <Agregar> que contiene
el siguiente código en el evento Click.-

IF ThisForm.contBotones.bAgregar.Caption = "\<Agregar"
SELECT("vencimientos")
= CURSORSETPROP('Buffering', 3, 'vencimientos' )
APPEND BLANK
ThisForm.SetAll( "Enabled", .F., "CommandButton")
ThisForm.contBotones.bAgregar.Caption = "\<Graba"
ThisForm.contBotones.bEditar.Caption = "\<Cancela"
ThisForm.contBotones.bEditar.Enabled = .T.
ThisForm.conAyuda.Visible = .T.
ThisForm.contCampos.Enabled = .T. &&(1)
ThisForm.contCampos.txtCodigo.SetFocus()
ThisForm.Refresh
ELSE
SELECT("vencimientos")
TABLEUPDATE()
SELECT("auxiliar")
REPLACE auxiliar.gorecno WITH vencimientos.codigo
ThisForm.contBotones.bAgregar.Caption = "\<Agregar"
ThisForm.contBotones.bEditar.Caption = "\<Editar"
ThisForm.conAyuda.Visible = .F.
ThisForm.contCampos.Enabled = .F.
ThisForm.verificatabla
ENDIF

(1) El contenedor habilitado y el campo dentro del contenedor esta habilitado
en tiempo de diseño.-

Saludos.
Daniel
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
Imágen de perfil de XXX

No me funciona SetFocus

Publicado por XXX (1368 intervenciones) el 13/12/2010 11:20:40
Daniel, porque le buscas 3 pies al gato sabiendo que tiene 4?
* Sencillo: no te hace el SETFOCUS porque no cumple el primer IF de /< Agregar, pienso que por alli deberias empezar, pon el SET STEP ON para saber por donde pasa y por donde no pasa................grrrrr
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:No me funciona SetFocus

Publicado por DanielVFP (37 intervenciones) el 13/12/2010 17:59:31
Hola
Al ver 3 xs me imaginaba que venia de enojo, si bien tomar como referencia la propiedad
caption para lograr el objetivo ahora me doy cuenta que no debe ser ni lo mas preciso ni correcto, no obstante nuevamente debo aclarar que pasa x el lugar esperado.-
Les pido x favor que no ocupen mas su tiempo en este post, yo solo frente a mi programa
lo voy a resolver, luego les cuento cual era el error.-

Saludos y muchas pero muchas gracias x la ayuda.-

Saludos.
Daniel
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:No me funciona SetFocus

Publicado por DanielVFP (37 intervenciones) el 13/12/2010 18:10:32
Hola
En parte ya lo tengo, no dispongode de tiempo para verificarlo en este momento pero si pongo que obtenga el foco los 3 campos restantes funciona a la perfección, el problema esta en el campo código.-

Ufffffffffff solucionado.

Saludos.
Daniel
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:No me funciona SetFocus

Publicado por xx (378 intervenciones) el 13/12/2010 18:15:36
No no te confundas xx es una persona y XXX es otra totalmente distinta

No es mi estilo hacer comentarios acidos, simplemente si estoy de mal humor no contesto.

Te doy una recomendación yo lo que hago es cambiar los colores de los objetos cuando estan deshabilitados asi es facilmente identificable en tiempo de ejecución es decir
DISABLEDBACKCOLOR y FOREBACKCOLOR la unica explicación que le encuentro a tu problema es que el metodo setfocus() no se ejecuta o estan deshabilitados, siempre que tengas problemas utiliza los famosos WAIT en las instrucciones selectivas para ir marcando el flujo del programa, y yo utilizo el caption como referencia, es decir tengo un boton que cumple dos funciones cuando ejecutara una funcion le doy un caption y cuando quiero que ejecute la otra funcion le doy otro caption tal cual lo haces

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:No me funciona SetFocus

Publicado por xx (378 intervenciones) el 13/12/2010 18:25:24
Por si a alguien le importe mi nombre es OMAR ROJAS y soy de ENCARNACION una ciudad de PARAGUAY!!!
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:No me funciona SetFocus

Publicado por victor perez (278 intervenciones) el 13/12/2010 23:02:26
Exacto, Daniel, yo tambien uso diferentes colores para los objetos activados y desactivados tanto para el background como para el Font...Asi se quien esta desactivado o no.

En realidad yo tampoco entendia tu problema...No se donde querias que estuviera el foco...si en un objeto dentro del contenedor o en un objeto fuera de este.

Yo tengo algo similar, cuando se hace click en un boton, se abre el contenedor y entonces envia el foco al objeto que quiero, sin problema.

Victor,
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:No me funciona SetFocus

Publicado por victor perez (278 intervenciones) el 13/12/2010 23:15:11
Hola,

Intentando entender tu codigo..

IF ThisForm.contBotones.bAgregar.Caption = "\<Agregar"
SELECT("vencimientos")
= CURSORSETPROP('Buffering', 3, 'vencimientos' )
APPEND BLANK
ThisForm.SetAll( "Enabled", .F., "CommandButton")
ThisForm.contCampos.Enabled = .T.
ThisForm.contBotones.bAgregar.Caption = "\<Graba"

Por que usas ThisForm.contBotones.bAgregar.Caption = "\<Agregar"
y mas abajo ThisForm.contBotones.bAgregar.Caption = "\<Graba"

No le veo sentido, le asignas a dos botones el mismo caption.

Yo no programo asi, prefiero hacer visible o no los botones. Por ejemplo, si agregas algun registro se hacen invisibles la mayoria de los botones exceto el Grabar y cancelar, los cuales pueden o no ser visibles al inicio (usualmente o uso visible o simplemente Enabled - Disabled)

Un mismo boton con dos nombres diferentes y por ende el evento click para el boton seria el mismo...no entiendo para nada lo que quieres hacer.

Por mi curiosidad, podrias aclararme que es lo que pretendes que el programa haga...

No entiendo eso de: IF THISFORM.CONTBOTONES.BAGREGAR.CAPTION ?

Cuando se cumple esa condicion, ese boton esta en el contenedor por lo que veo, luego si el caption es "AGREGAR" se cumple la condicion y se ejecuta un codigo que cambia el nombre del boton pero sigue teniendo el mismo evento Click.

Rarisimo esto que pones pero si me explicas, para mi satisfaccion.

Saludos,

Victor,
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:No me funciona SetFocus

Publicado por DanielVFP (37 intervenciones) el 14/12/2010 15:30:14
Hola Doc.
Haber si entiendes la lógica de mi programa de esta manera.-

<Recupera> <Buscar> <Agregar> <Editar> <Borrar> <Salir>

Cuando aprieto <Agregar> los botones <Recupera> <Buscar> <Borrar> <Salir>
Les pongo la propiedad enabled en .F. para que no se los pueda acceder ya que no los
necesito, el botón <Agregar> le cambio el caption x "Graba" y el botón <Editar> x "Cancela"
luego cualquiera de las 2 acciones bragar o cancelar deja los botones como en el inicio.-

Luego me cuentas.-

Daniel
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:No me funciona SetFocus

Publicado por victor perez (278 intervenciones) el 14/12/2010 16:56:53
Hola Daniel,

Si, asi lo hago en mis programas. Pero si le cambias solo el caption a dos de los botones una vez presionado CLICK sobre AGREGAR, entonces el evento Click de estos botones siguen siendo lo mismo...porque solo le has cambiado el nombre, no el programa en el EVento Click.

Mira lo que yo hago.

Botones:

AGREGAR EDITAR ANULAR IMPRIMIR SALIR GRABAR CANCELAR

Inicialmente los botones GRABAR y CANCELAR ESTAN VISIBLE=.F.

CUANDO AGREGO, TODOS LOS BOTONES SE PONEN ENABLED=.F. Y LOS DE GRABAR Y CANCELAR VISIBLE=.T.

Asi cada boton tiene su propio evento Click y no tienes que estar poniendo IF thisform.boton.caption=" " sino que al hacer Click se cumple la condicion y listo.

Si tratas de editar y no has abierto un registro, entonces te pide que lo abras y te pasa a la pagina donde estan listados los registros...

Si tratas de imprimir, anular sucede igual. Al anular, por ejemplo, se coloca una mascara que dice anulado como visible, siempre que esta mascara este visible el registro esta anulado, mas no eliminado de la base de datos...para ello cada registro tiene un campo de Anulado, si aparece alli un "*" entonces está anulado y hace que la mascara aparezca al tratar de Editar, Anular, Imprimir, y te dice que no puedes hacer esas operaciones con un registro ya Anulado.

Tambien puedes hacer un metodo para los botones, si los quieres enabled T o F. Asi solo llamas el metodo y listo.

Thisform.activa hace que los botones esten como al inicio...

Thisform.desactiva hace que los botones muestren solo el de cancelar / grabar como visible.

Asi no tienes que estar repitiendo varias veces ese pedazo de codigo.

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:No me funciona SetFocus

Publicado por DanielVFP (12 intervenciones) el 14/12/2010 19:51:41
Hola Victor
>Si, asi lo hago en mis programas. Pero si le cambias solo el caption a dos de los >botones una vez presionado CLICK sobre AGREGAR, entonces el evento Click de estos >botones siguen siendo lo mismo...porque solo le has cambiado el nombre, no el >programa en el EVento Click.

Es x eso el IF, si el caption dice <Agregar> hace determinada cosa ELSE el caption dice <Graba> hace otra.-

AGREGAR EDITAR ANULAR IMPRIMIR SALIR GRABAR CANCELAR
En cuanto a esto es correcto pero no me gusta como queda el diseño, vos decís que si no
estas editando o agregando están invisibles en el form x lo tanto quedarian descentrados los botones o tendria que cambiarle las coordenadas cada vez que utilice GRABAR CANCELAR.-

Espero que entiendas mi técnica de principiante, yo estoy aprendiendo de las que aplicas vos y el resto de expertos.-

Una última cosa ¿a que le llamas mascara, como funciona?

Saludos y gracias x el tiempo dedicado.-

Daniel
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:No me funciona SetFocus

Publicado por victor perez (278 intervenciones) el 15/12/2010 21:03:49
Hola,

Entiendo tu punto. Y si, el evento Click mira caption y decide si se cumple o no la condicion.

En cuanto a los botones no queda mal la imagen de tu form porque los botones cancelar / grabar estan en el extremo derecho del form..

Asi siempre sabras donde estas metido dependiendo de si se ven o no estos botones.

Mi hijo, que estudio redes, me dijo un dia "papa has los programas como si fuera un 100% ignorante el que esta frente a la pantalla usando el programa."

Las cosas que nos parecen logicas a los que conocemos de programacion, no le parecen logicas al usuario, que es el que va a utilizar los programas.

Mis botones tienen imagenes, asi que te imaginas, cambiar imagenes y caption...pero bueno, me dijo un amigo, que cada programador tiene su logica muy particular. Y si funciona, bienvenido !!!

Respecto a la mascara, son los contenedores...Si agregas un contenedor usualmente lo asignamos (en mi mente) con las iniciales MSK (mask).. pero es lo mismo que te comenté utilizaras la vez anterior.

Recuerda lo de los metodos para activar y desactivar botones, u objetos. Es muy muy practico. Ademas de usar en las consultas los filtros ya añadidos en un metodo tambien, asi solo tienes que llamarlo en un form que usa la misma tabla cambiando la condicion de busqueda.

Saludos y cualquier cosa, nos avisas...Estamos todos para aprender...yo por lo menos visualice de tu post el comando SETALL, nunca lo he usado.

Dios te Bendiga!

Victor - Panama
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:No me funciona SetFocus

Publicado por xx (378 intervenciones) el 15/12/2010 23:19:56
Disculpen mi intromisión: pero segun entiendo la idea de cambiar el caption de un boton es darle doble funcionalidad, es decir con un caption: ejecuta determinadas acciones, con otro caption ejecuta otras acciones totalmente diferente yo lo utilizo no se si es adecuado, pero si es funcional es algo parecido a las funciones virtuales, nadie impide que en un evento click u otro se pueda ejecutar dos o mas funciones es decir separando
las con estructuras selectivas ejemplo:

THISFORM.COMMAND1.CLICK()
DO CASE
CASE THIS.CAPTION=="\<Title1"
ejecuta una funcion o conjunto de sentencias
y por ultimo cambiamos el titulo para que la sgte vez no ejecute la misma funcion
si es lo que se quiere
THIS.CAPTION="\<Title2"

CASE THIS.CAPTION=="\<Title2"
ejecuta otra funcion o conjunto de sentencias
y por ultimo cambiamos el titulo para que la sgte vez no ejecute la misma funcion
si es lo que se quiere
THIS.CAPTION="\<Title3"
....
ENDCASE
RETURN

Pd: es decirle a un boton que segun el titulo que tenga haga una u otra cosa
y sigan asi impartiendo y reflejando sus conocimientos que con eso ustedes aprenden mucho mas!!!

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:No me funciona SetFocus

Publicado por DanielVFP (12 intervenciones) el 16/12/2010 17:53:34
Hola a todos.
Dios te Bendiga!, de esto si podemos hablar mucho pero mucho soy estudiante de metafísica cristiana x mas de 20 años(vegetariano x 18 años) si bien este no es el ámbito decime ¿porque pusiste solo en este post la frase?.-(si me mandas un privado o como desees responderme intenta solo utilizando el corazón nada de la mente).-

>y sigan así impartiendo y reflejando sus conocimientos que con eso USTEDES aprenden mucho mas!!!
Con esta frase debo suponer que vos sabes todo, bien nos aprovecharemos de eso.-

Cuando me pongo a filosofar.........

Saludos.
Daniel
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:No me funciona SetFocus

Publicado por xx (378 intervenciones) el 16/12/2010 18:45:41
No, simplemente estoy fomentando la publicacion del conocimiento que tanto nos ha beneficiado a todos, yo me incluyo!!

a Pesar de que en lo referente a VFP cuando necesite no tenia acceso a internet, pero en estos tiempos y con herramientas open source como linux, me he beneficiado y bastante de los conocimientos ajenos, tales asi que estoy pagando mi deuda con la sociedad trantado de ayudar y volcar mis pocos conocimientos para quien crea los necesite.

No no es asi yo no se todo!!!, si bien he aprendido algunas cosas en informatica y electronica uno nunca sabe todo, en estas ramas todo evoluciona y el que no le sigue la corriente se pierde.

Saludos y sigan procurando!
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:No me funciona SetFocus

Publicado por victor perez (278 intervenciones) el 17/12/2010 15:01:17
Ok. Entendido lo del caption. Si, es logico, se puede usar...pero como decia quien me introdujo en VFP todo es gusto de programacion. Cada uno tiene su forma peculiar de programar. Es como en mi profesion, tenemos muchas maneras de solucionar los problemas medicos, siempre y cuando los solucionemos y bien.

Bendiciones!
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