Contenedores en un Form

172 views
Skip to first unread message

Carlos Hidalgo

unread,
Nov 15, 2016, 5:04:29 PM11/15/16
to Comunidad de Visual Foxpro en Español
Buenas a Todos
Quiesiera que me ayudaran con este problemita.
En mi form1 tengo varios contenedores (ocultos)
En esta pantalla adjunta aparece un contenedor al fondo, que es donde ingreso las Compras de articulos. y otro al frente (mas pequeño) donde ingreso articulo nuevos..

El problemita es que cuando deseo agregar un nuevo articulo Presiono F4 en el textbox del contendor de fondo pero me sigue apareciendo el "0" del textbox al momento de que aparece el contenedor que esta en frente..  (es el "0" que aparece encima de donde dice "Marca".
no se si me explique jejeje

desde el textbox lo hago visible asi
evento Keypress
IF nkeycode=TECLA_F4 &&F4 UN NUEVO ARTICULO
WITH THISForm.ARticulo 
.nombre.SETFOCUS
.VISIBLE=.T.
.ENABLED=.T.
.HEIGHT=336
.LEFT=131
.TOP=192
.WIDTH=612
.cuadro1.WIDTH=.WIDTH-3
ENDWITH
ENDIF


Saludos
Dibujo.bmp

Carlos Hidalgo

unread,
Nov 15, 2016, 5:14:45 PM11/15/16
to publice...@googlegroups.com
por si no se ve la imagen
Imágenes integradas 1

Carlos Alfaro

unread,
Nov 15, 2016, 5:46:41 PM11/15/16
to publice...@googlegroups.com

Saludos estimado colega:

 

Eso es porque el foco sigue en ese textbox.

 

Debes poner el SetFocus despues de la propiedad Visible, son los siguientes:

                        .VISIBLE=.T.

                        .nombre.SETFOCUS

 

Espero estar en lo correcto.

 

Bendiciones.

 

 

Carlos Alfaro

Carlos Hidalgo

unread,
Nov 15, 2016, 6:15:27 PM11/15/16
to publice...@googlegroups.com
Ya probe en varios ordenes pero no.
    WITH THISForm.ARticulo
        .VISIBLE=.T.
        .ENABLED=.T.
        .refresh
        .nombre.SETFOCUS

Mauricio Gonzalez

unread,
Nov 15, 2016, 8:15:02 PM11/15/16
to Comunidad de Visual Foxpro en Español
cambia esto: IF nkeycode=TECLA_F4 &&F4 UN NUEVO ARTICULO, por
IF nkeycode=F4 &&F4 UN NUEVO ARTICULO
 a menos que hayas definido tecla_f4  de otra manera

Carlos Hidalgo

unread,
Nov 15, 2016, 8:49:52 PM11/15/16
to publice...@googlegroups.com

Gracias..
Tengo un archivo donde defino la tecla con este nombre

Víctor Hugo Espínola Domínguez

unread,
Nov 15, 2016, 9:00:47 PM11/15/16
to publice...@googlegroups.com
Prueba esto:


IF nkeycode=TECLA_F4 &&F4 UN NUEVO ARTICULO
KEYBOARD '{TAB}'
 
WITH THISForm.ARticulo
           ......
           ......

Saludos,
Víctor.
Lambaré - Paraguay.

Fidel Charny

unread,
Nov 16, 2016, 6:32:07 AM11/16/16
to Comunidad de Visual Foxpro en Español
Prueba de esta forma:
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nkeycode
=-3 &&F4 UN NUEVO ARTICULO    
    WITH
THISForm.articulo

       
.VISIBLE=.T.
       
.ENABLED=.T.
       
.HEIGHT=336
       
.LEFT=131
       
.TOP=this.Parent.Parent.Top + 30
       
.WIDTH=612
       
*.cuadro1.WIDTH=.WIDTH-3
       
.nombre.SETFOCUS
       
.zorder(0)
    ENDWITH
    NODEFAULT
ENDIF

Lo de -3 es irrelevante. Vale como lo tienes.

Saúl Piña

unread,
Nov 16, 2016, 1:11:53 PM11/16/16
to Comunidad de Visual Foxpro en Español
Yo también tuve un tiempo el mismo problema, entonces mejor decidí por usar form, ya sea de Fom a form clase.vcx o Form a form modal (con unos cuantos LPARAMETERS)  y adios a la estetica y objetos de container.


adjunto imagenes de ejemplo.




Carlos Hidalgo

unread,
Nov 16, 2016, 2:01:21 PM11/16/16
to publice...@googlegroups.com
Gracias por las sugerencias

con el enfoque no tengo problema.. se posiciona en Nombre de articulo como lo quiero..
el problema es que queda dibujado el textbox sobre el contenedor que esta en frente.


Carlos Hidalgo

unread,
Nov 16, 2016, 3:06:58 PM11/16/16
to publice...@googlegroups.com
Bueno... :)  :) 
Ya lo solucione :) .)

si a alguien le ha pasado y le sirve aqui va
inserte un Timer en el contenedor de Articulos.
Propiedades 
Enabled=.f.
Interval=1

y en el evento interval
THIS.Parent.BackStyle= 1
THIS.Enabled= .F.

y desde donde llamo al contenedor. 

IF nkeycode=TECLA_F4 &&F4 UN NUEVO ARTICULO
WITH THISForm.ARticulo 
.VISIBLE=.T.
.ENABLED=.T.
.nombre.SETFOCUS
.HEIGHT=336
.LEFT=131
.WIDTH=612
.top=192
.cuadro1.WIDTH=.WIDTH-3
ENDWITH
THISFORM.ARTICULO.TImer.Enabled= .T.
ENDIF

Saludos
aun se aceptan sugerencias y comentarios

Antonio Meza

unread,
Nov 16, 2016, 4:21:06 PM11/16/16
to Comunidad de Visual Foxpro en Español
Que bueno que lo resolviste, pero definitivamente no es lo correcto, hacer mantenimiento a ese formulario se volverá un pesadilla pasado el tiempo, algo como le esta pasando a Pancho que compro un sistema X.

Como te comento Saul tener en un formulario a parte es sencillo sin usar formSet y no se porque se les complica tanto usarlos, incluso le puedes dar el mismo diseño que tienes en el contenedor.

saludos
Antonio Meza

Carlos Hidalgo

unread,
Nov 16, 2016, 4:42:59 PM11/16/16
to publice...@googlegroups.com
Gracias Antonio.
Tienes razon... pero vere que quede documentado.... :) mientras encuentro una mejor solucion... 
Con el uso de forms tienes razon pero me interesa aprender a usar todo lo de Fox.. y los contenedores ya me gustaron....

Esta aplicacion que estoy desarrollando solo tiene un formset con 3 formularios... todo las demas ventanas son contendores del Form1.. El form2 es mi mensaje personalizado y el form3 es una grid para busquedas..

Saludos

Luiz Alexandre Ruiz

unread,
Nov 16, 2016, 4:43:45 PM11/16/16
to Comunidad de Visual Foxpro en Español
Para solucionar sem usar o Timer, utilize o ON KEY LABEL F4.

Exemplo
Form1.Init
ON KEY LABEL F4 MudaContainer()


Em um PRG

FUNCTION MudaContainer
LOCAL loForm as Form
IF TYPE("Application.ActiveForm") = "O"
loForm = Application.ActiveForm
loForm.Articulo.Nombre.SetFocus()
ENDIF
ENDFUNC

Aqui está bem pequeno o código, mas você pode acrescentar se o Form é o correto, se o foco está no TextBox desejado e outras coisas mais.

Carlos Hidalgo

unread,
Nov 16, 2016, 5:05:32 PM11/16/16
to publice...@googlegroups.com
Gracias Luis.

Pero mi problema no es con el enfoque... 
El problema es con el textbox que queda dibujado en el container.. (error grafico)
Saludos
Reply all
Reply to author
Forward
0 new messages