FoxPro/Visual FoxPro - se puede o no se puede?

 
Vista:

se puede o no se puede?

Publicado por Hugo (3 intervenciones) el 21/04/2010 01:26:39
tengo un form con un unico control, un texbox
y quiero hacer lo siguiente:
cada vez que presione Enter en el texbox
aparezca justo debajo de este otro texbox con la mismas caracteristicas que el texbox que actualmente tiene el enfoque, y una vez creado el textbox, tenga este ultimo el enfoque tambien
el form inicia con ese unico textbox
vale decir que en tiempo de diseño solo se instancia ese texbox y nada mas
no quiero decir que en tiempo de diseño inserte "n" texbox para el proposito que quiero
osea:
si el texbox que se coloco en tiempo de diseño es txtCelda1
cuyas algunas propiedades son:
top=10
left=20
height=24
width=96
visible=.t.
estando el foco en txtCelda1, al presionar Enter ocurra lo siguiente:
se crea por ejemplo txtCelda2 y sus propiedades serian:
top=34 && al hacer esto, txtCelda2 se mostrara debajo de txtCelda1
left=20
height=24
width=96
visible=.t.
ahora estando el foco en txtCelda2, si vuelvo a presionar Enter, ocurra lo siguiente
se crea txtCelda3 y sus propiedades serian:
top=58 && al hacer esto, txtCelda3 se mostrara debajo de txtCelda2
left=20
height=24
width=96
visible=.t.
ahora eso no es todo, hay mas cosas pero de momento solo quiero saber si lo que pregunto es posible, digo que no es todo porque a medida que presione Enter van a aparecer nuevos textbox con las mismas caracteristicas que el anterior, y llegara un momento en que no quepen en el form, y entonces sera necesario programar un scroll, pero eso ya es otra historia

no me pregunten porque quiero hacer eso, solo quiero hacerlo
no me digan mejor usa un grid, etc

mi pregunta esta clara y si alguien tiene la solucion se lo agradeceria

hasta entonces
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
Imágen de perfil de xxx
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

se puede o no se puede?

Publicado por xxx (1541 intervenciones) el 21/04/2010 01:56:01
No se puede tener el foco en 2 objetos a la vez, pero sigue intentandolo Hugito.
Aaaaaaaah cosas veredes mi sancho panza.................
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:se puede o no se puede?

Publicado por Hugo (3 intervenciones) el 21/04/2010 02:41:46
y kien dijo q quiero el foco en dos objetos a la vez?
el foco solo lo tendra siempre el ultimo objeto creado
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:se puede o no se puede?

Publicado por ACM (162 intervenciones) el 21/04/2010 02:30:12
Hola Hugo

Haber todo se puede, yo en un formulario de busqueda incremental logre mantener el foco en un textbox y una grilla al mismo tiempo, asi que puede escribir en el texto y moverse por la grilla sin perder el foco ninguno de los 2.

Haber solucion rapida, ya que hay varios caminos para llegar a un resultado si yo tubiera que hacerlo, y rapido seria practico ahora si son Muchos text o n infinito

desecha la opcion.

en el formulario colocaria tantos text como sea necesario, lo otro que vi de tu pregunta es que el top no constante 10 20 58, a cada text le asignaria las propiedades que tu quieres , dejaria todos invisible. menos el text1.

entonces al perder el foco el text1 en el losfocus ejemplo

thisform.text2.visible=.t.
thisform.text2.setfocus && en caso que el tabindex este desordenado

entonces al perder el foco el text2 en el losfocus ejemplo

thisform.text3.visible=.t.
thisform.text3.setfocus && en caso que el tabindex este desordenado

Y asi con los demas text

si sobrepasa la pantalla activas el scrollbar y para eso debes dfinir el largo de form en el init.

Ahora el formulario tiene un tope asi que no podrias seguir asia abajo tendrias que poner mas text al lado.

es una solucion rapida la que se me ocurre por ahora, debe haber una como tu quieres pero hay que dedicarle tiempo. pero todo se puede.

Saludos

Acm
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:se puede o no se puede?

Publicado por Hugo (3 intervenciones) el 21/04/2010 03:09:37
no man
me explicare mejor:

*en tiempo de diseño lo q menos quiero hacer es insertar tantos texbox como necesite
*eso es muy trabajoso, me jubilaria con eso
*ademas, no se cuantos necesitare, pueden ser 2 o pueden ser 5,000

*tampoco quiero tener el foco en mas de un control al mismo tiempo
*el foco lo tendra siempre el ultimo textbox creado

*en tiempo de diseño solo se inserta un solo textbox
*entiendo q la mejor forma es instanciarlo a partir de una clase, pero como?
*asi es, un solo textbox, y los demas se van creando a partir del primero
*es como decir el primer textbox q pongo en el form es el papa
*los demas seran sus hijitos, igualitos a el
*estando en cualquiera de los textbox, si se presiona enter pasa lo siguiente:
*se crea otro textbox igual y se posiciona justo debajo
*pero solo se debe crear el textbox siempre y cuando debajo de este no haya textbox
*si ya hay un textbox al presionar enter no debe pasar absolutamente nada
*lo q debe pasar en ese caso es cambiar el foco a ese control debajo, nada mas

*sobre un posible scroll...
*no deseo usar la propiedad scroll del form, no me sirve
*porque lo q solo kiero desplazar es solamente los textbox q he ido creando
*en el form hay otros controles como botones de comando, combos, etc
*claro, no les dije ke habian mas controles porque no quiero complicarles la vida
*pero realmente si hay mas controles pero ese no es el caso
*si incluyo el scroll del form todos esos controles tambien se moveran
*y no qiero mover los demas controles, solo los textbox q he ido creando
*podria ser crear un contenedor y adherirlo al form
*y trabajar lo q necesito en el contenedor
*pero hasta donde se, un contenedor no tiene la propiedad scroll
*queda solo programar y
*hacer q cuando se este en el control mas inferior y se presione enter
*todos los controles creados se desplacen hacia arriba
*de igual forma que si subo con las flechas hasta el textbox mas arriba,
*todos los demas controles se desplacen hacia abajo
*permitiendo visualizar el q estaba oculto

como veran, la idea es sencilla, pero tiene que ser dinamico
por otro lado:

*es tambien demasiado engorroso tratar los objetos como text1, text2, etc
*para ello creo una propiedad matriz en el form
*a esa propiedad matriz puedo llamarlo por ejemplo "celda"
*y referenciarlo en cada propiedad matriz correspondiente
*de modo que por ejemplo no haria esto si necesitare asignar un valor:
*thisform.textbox1458.vale="jueguemos en el bosque mientras el lobo esta"
*sino esto:
*thisform.celda[1458].value="lobo que estas haciendo?"

quizas alguno se pregunte: 1458?
y para q quieres crear hasta 1458 textbox?
estas loco

bueno es normal reaccionar asi pero no escribo esto para q se agarren de los pelos
si alguien puede hacerlo entonces a ver como se hace
si alguien despues de leer esto no tiene la mas minima idea de como
entonces puede pasar a la siguiente pagina nomas y no hacerse mucho problema leyendo esto

bueno, es todo por ahora
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:se puede o no se puede?

Publicado por es_binario (757 intervenciones) el 21/04/2010 05:09:03
Bueno ahora le das sentido a tu pregunta con lo del cuento de niños, tu lo que deseas es hacer un cuento interactivo segun las deciciones del usuario, por lo que veo, o un cuento con pantallas en picture, lo de los textbox infinitos como pedias en un principio es una solucion poco ingeniosa, te convendria mas una pagin web, que puedes hacer desde un reporte con xml.

La solucion mas sencilla seria tener un label que interactue con un Textbox, en donde el textbox valla interactuando conforme transucurre la historia y el label solo sea informativo, tambien dentro del codigo del textbox a travez de un contador que valla recorriendo la matriz para no perder el hilo de la historia.

Mira te lo pongo mas claro, digamos que si el usuario le da un enter al textbox este textbox se recorra abajo, y el texto del textbox se convierta en un etiqueta, con un mazimo de labels que pueden haber en la pantalla, una vez que digamos el texto en pantalla supera lo visible, entonces los labels se recorren sus caption para poder seguir mostrando el resto de la historia, ademas tambien se vuelven visibles un par de controles que le permiten al usuario navegar de arriba a abajo, sin necesidad de que cres miles de textbox. creo que esa seria una buena solucion asi de pronto el form se comportaria como una pagina web, y si es dinamico el cuento y si en base a las respuestas o interaccion del usuario el cuento cambia, entonces bastaria con que el al hacer click en un label, este se convierta en textbox, y asi de la impresion que donde hagas clic te cambia la historia, y seria mejor si el textbox y el label creas esas propiedes en una clase, para hacer mas solido su codigo.

Espero entiendas mi punto de vista.
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:se puede o no se puede?

Publicado por Ana (15 intervenciones) el 22/04/2010 23:57:52
Creo que podrías crear una clase TEXTBOX_1 en el que la propiedad Click esté lo siguiente:

*!* */* Adiciona un text
xobj_act = alltr(this.name)
xnum_obj = val(substr(xobj_act,5,len(xobj_act)-4))
xobj_new = "text"+alltr(str(xnum_obj+1))
with thisform
.AddObject(xobj_new,"TextBox_1")
endwith

with thisform.&xobj_new
.top = 24+(xnum_obj*43) && 24 es el inicio de tu primer text y
&& 43 es la distancia entre top y top
.visible = .t.
.setfocus
endwith

En tu formulario no tendrías ningún text inicial, tendrías que adicionarlo al activar el formulario.
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