FoxPro/Visual FoxPro - Tengo problemas para generar varios checkbox en tiempo de ejecución

 
Vista:
Imágen de perfil de Fecho Jaramillo
Val: 11
Ha aumentado su posición en 11 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Tengo problemas para generar varios checkbox en tiempo de ejecución

Publicado por Fecho Jaramillo (12 intervenciones) el 14/02/2020 02:39:36
Saludos a todos.

Tengo problemas para generar varios checkbox en vfp9, para ver si alguien puede orientarme.
Tengo una tabla dentro de las cual guardo la descripción y el código de varios formatos que deben ser impresos al ser seleccionados por el usuario. La idea es que todo sea dinámico de tal forma que el alto del formulario aumente o disminuya automáticamente a medida que se se agreguen nuevos formatos a la tabla.

El siguiente código me funciona bien en la creación individual de otros botones, pero cuando se ejecuta el código correspondiente a la creación de los chekbox, se me genera un error indicando que la instrucción for/endfor, no se acepta dentro de una clase. Aclaro que tampoco funciona con "for each/endfor". Alguna idea que puedan aportarme se la agradezco.

Nótese que si retiro la parte del código que debería generar los check, el programa funciona.

Gracias


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
PUBLIC oForm1,QFormatos
CLOSE ALL
USE  plantilla IN 0
COUNT TO QFormatos FOR nroformato#0 AND NOT DELETED() &&cantidad de formatos para generar los checbox
alturaFormulario=qformatos*22+200   &&la altura va variando dependiendo de los formularios que se vallan creando
AltBotImprimir=alturaFormulario -100&&alto para la posiciópn del boton imprimir
altoCheck=22
anchocheck=LEN(plantilla.documento)+180
distanciaTop=80
GO top
oForm1 = NEWOBJECT("Impresor")
RETURN
DEFINE CLASS Impresor AS FORM
  HEIGHT = alturaFormulario
  WIDTH =100+LEN(plantilla.documento)+400 &&100 de left, ma el ancho del campo + 200 all lado derecho
  CAPTION = "Sistema de impresion de documentos"
  NAME = "Impresor"
  backcolor=RGB(130,255,192)
  ADD OBJECT Salir AS COMMANDBUTTON WITH TOP =AltBotImprimir,LEFT = 330,HEIGHT = 27,WIDTH = 80,CAPTION = "Salir",NAME = "Salir"
  ADD OBJECT aviso as label WITH fontsize=14, fontname="Arial",autosize = .T.,caption = 'Sistema de impresión de documentos',left = 110,top=18,visible=.t.,backcolor=RGB(130,255,192)
  ADD OBJECT Aceptar as commandbutton With autosize = .T.,caption = 'Imprimir',left = 150,top=AltBotImprimir,visible=.t.
  ADD OBJECT Marcatodo as commandbutton With width = 107,height=40,caption = 'Marcar Todo',left = 8,top=80,visible=.t.
  ADD OBJECT DesMarcaTodo as commandbutton With width = 107,height=40,caption = 'Desmarcar todo',left = 8,top=130,visible=.t.
  ADD OBJECT CerrarWord as commandbutton With width = 107,height=40,caption = 'Cerrar Word',left = 8,top=180,visible=.t.
  FOR i=1 TO Qformatos	&&crea los check  //acá es donde falla.
		nomFormato="check"+ALLTRIM(STR(i))
		ADD OBJECT &nomFormato as checkbox With width = anchocheck,height=22,caption = plantilla.nombre,left = 8,top=180,visible=.t.
  endfor
 
  PROCEDURE INIT
		BINDEVENT(THISFORM.Salir, 'Click', THISFORM, "ClickBoton")
		THIS.SHOW()
  ENDPROC
  PROCEDURE "ClickBoton"
 	  	THISFORM.RELEASE()
  ENDPROC
 
ENDDEFINE
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 Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Tengo problemas para generar varios checkbox en tiempo de ejecución

Publicado por Abel (286 intervenciones) el 14/02/2020 15:39:52
y si lo pones en otro sitio, por ej.:

1
2
3
4
5
6
7
8
9
anchocheck=Len(plantilla.documento)+180
distanciaTop=80
Go Top
oForm1 = Newobject("Impresor")
For i=1 To QFormatos &&crea los check //acá es donde falla.
	nomFormato="check"+Alltrim(Str(i))
	Add Object &nomFormato As Checkbox With Width = anchocheck,Height=22,Caption = plantilla.nombre,Left = 8,Top=180,Visible=.T.
Endfor
Return
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 fercho Jaramillo
Val: 11
Ha aumentado su posición en 11 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Tengo problemas para generar varios checkbox en tiempo de ejecución

Publicado por fercho Jaramillo (12 intervenciones) el 14/02/2020 17:44:00
GRacias Abel por tu Respuesta.

Coloque el código como me lo indicaste y produce el siguiente error "Statement is only valid within a class definition"
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 Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Tengo problemas para generar varios checkbox en tiempo de ejecución

Publicado por Abel (286 intervenciones) el 14/02/2020 18:42:10
Perdona que no lo he ampliado; pero sería así...

1
2
3
4
5
6
7
8
9
10
11
12
For i=1 To 5
	nomFormato="check"+Transform(i)
	oForm1.AddObject (nomFormato,"checkbox")
	With oForm1.&nomFormato.
		.Width    = anchocheck
		.Height   = 22
		.Caption = plantilla.nombre
		.Left       = 8
		.Top       = 180
		.Visible  =.T.
	Endwith
ENDFOR
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 fercho Jaramillo
Val: 11
Ha aumentado su posición en 11 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Tengo problemas para generar varios checkbox en tiempo de ejecución

Publicado por fercho Jaramillo (12 intervenciones) el 15/02/2020 01:24:07
Abel.
Gracias por la prontitud y por la solución. Funcionó perfecto. Ahora puedo continuar el desarrollo.
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