Crear varios botones con código V. Fox

Espero que que algún experto pueda auxiliarme con esto.

Quiero crear x numero de botones por medio de código. EXPLICO

Estoy tratando de crear un pequeño programa en el que va a pedir un numero determinado de semanas para que en cada una de ellas se introduzca información en un campo memo, ¿pero para ello primero pregunta CUANTAS SEMANAS REQUIERE? Y al teclear el numero de semanas por ejemplo 10, al dar click en el botón de crear, en la parte media del FORMULARIO deben aparecer 10 botones pequeños donde en cada uno de ellos al dar click abra un campo memo para introducir información (una redacción)

1 respuesta

Respuesta
1

Crea dentro del formulario un objeto CommandGroup el que puedes ponerlo en visible=.F. Para que no se vea hasta que hagas la consulta de cantidad de semanas..

Este es el aspecto de como podrías poner tu command group.

Por otro lado tienes un textbox donde ingresas el número de semanas (es decir, el número de botones que aparecerán). En el valid del TextBox ingresas lo siguiente..

If Empty(This.Value)
    Return
Endif
nSuma = 0
This.Parent.Commandgroup1.ButtonCount = This.Value
For Each oControl In This.Parent.Commandgroup1.Objects
    nSuma = nSuma+1
    oControl.Caption = "Semana "+Transform(nSuma)
Next
Return

Cuando escribas un número por ejemplo 7, verás lo siguiente...

Con esto agregas botones y le das nombres; ahora para que al presionar un botón el command group reconozca que botón se presionó; en el método "InteractiveChange" del objeto CommandGruop podrás devolver el número de botón que se presionó con el término "This.Value" que te devolverá 1,2,3... n correspondiente al número de botón presionado.

Hola.

Hice los pasos como me indico, pero me genera un error "DATA TYPE IS INVALID FOR THIS PROPERTY."

deteniéndose en esta linea
This.Parent.Commandgroup1.ButtonCount = This.Value

Podrá ayudarme determinar en que me equivoque..

gracias.

Aparentemente se trata del tipo de valor que le entregas a la propiedad; esa propiedad debe recibir un valor de tipo numérico; es decir que "This.Value" debería ser un valor numérico.

El procedimiento donde esta esa línea que te da error como las restantes, ¿la haz metido dentro del método VALID del TextBox donde ingresas el número de semanas?

Podríamos pulir un poco más el código para que solo transforme el valor carácter en numérico..

Reemplaza el código del método VALID del objeto "TextBox" (en el que ingresas la cantidad de semanas por lo siguiente...

If Empty(This.Value)
    Return
Endif
nValor = Iif(Vartype(This.Value)="C",Val(This.Value),This.Value)
nSuma = 0
This.Parent.Commandgroup1.ButtonCount = nValor
For Each oControl In This.Parent.Commandgroup1.Objects
    nSuma = nSuma+1
    oControl.Caption = "Semana "+Transform(nSuma)
Next
Return

Por si no quieres cambiar todo, comprueba que solo he agregado una línea...

nValor = Iif(Vartype(This.Value)="C",Val(This.Value),This.Value)

Que consulta y convierte a valor numérico si no lo fuese, el valor pasado.

Con ello se modifica la línea siguiente..

This.Parent.Commandgroup1.ButtonCount = nValor

¡Muchas Gracias!

Funcionó perfectamente..

No cabe duda de que cada día se aprende algo nuevo, y gracias a la experiencia de personas como usted el conocimiento es compartido.

Espero pueda volver a contar con su apoyo más adelante...!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas