Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Crear Objetos de forma dinamica
Message
From
25/02/2008 16:36:20
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivia
 
 
To
25/02/2008 11:53:09
General information
Forum:
Visual FoxPro
Category:
Other
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows XP SP2
Miscellaneous
Thread ID:
01296115
Message ID:
01296225
Views:
28
>Hola, ya pude crear los objetos, solo tenia que hacer referencia a la clase base que la contiene.
>Ahora mi duda es la siguiente:
>
>Como hago para ubicarlos bien en pantalla?
>
>Me alimento de un cursor que tiene:
>
>
>strobjeto             strprefijo StrClaseObjeto
>--------------------- ---------- --------------------
>EdtResumen            Edt        editbox
>ImgFoto               Img        image
>LnkLink4              Lnk        textbox
>LnkLink5              Lnk        textbox
>LnkLink6              Lnk        textbox
>LnkLink1              Lnk        textbox
>LnkLink2              Lnk        textbox
>LnkLink3              Lnk        textbox
>
>
>Y construyo los objetos asi:
>
>
>SELECT TmpObjetos
>GO TOP
>SCAN
>	SCATTER MEMVAR
>	m.strobjeto=ALLTRIM(m.strobjeto)
>	m.StrClaseObjeto=ALLTRIM(m.StrClaseObjeto)
>	m.strprefijo = ALLTRIM(m.strprefijo)
>	thisForm.AddObject(m.strobjeto,m.StrClaseObjeto)
>	IF m.strprefijo='edt' OR m.strprefijo='Edt'
>		comando = "thisform."+m.strobjeto+".width = thisform.Width"
>		&comando
>		comando = "thisform."+m.strobjeto+".top = thisform.top"
>		&comando
>		comando = "thisform."+m.strobjeto+".visible=.t."
>		&comando
>	ELSE
>		comando = "thisform."+m.strobjeto+".visible=.t."
>		&comando
>	ENDIF
>ENDSCAN
>
>
>Pero me quedan en desorden.
>alguien sabe como poder distribuirlos bien?
>
>Gracias!

Después de instanciar los objetos, y antes de hacerlos visibles, deberías cambiar sus propiedades .Top y .Left, a tu gusto.

Por lo demás, creo que deberías tener una referencia a los objetos, en vez de hacer sustitución macro para todo el comando. Posiblemente tengas que usar una sustitución macro para obtener el objeto, o un evaluate(), pero posteriormente, usas la referencia de objeto.

Por ejemplo:
i = 1
loTextBox = evaluate("ThisForm.TxtOpciones" + trans(i))
loTextBox.Top = i * 20
loTextBox.Visible = .T.
Tal vez también te interese leer mis comentarios sobre grupos de objetos: FAQ #8110 (en inglés).
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform