FoxPro/Visual FoxPro - Error Instantiating class

 
Vista:

Error Instantiating class

Publicado por Edu (1 intervención) el 28/02/2019 15:06:29
Buen dia a todos. Les comento mi problema, para ver si alguno me orienta en la solución.

Trabajo con Visual Fox Pro 9.

Tengo una clase controles.vcx dentro de mi proyecto, con varios controles. Si uso cualquier control de ahi pegado en tiempo de diseño no tengo problemas. Ahora si agrego en tiempo de ejecucion, mediante un prg no incluido en el proyecto, con la forma oForm.AddObject("MiObjecto", "Miclase") arroja el error: Error Instantiating class: cannot find PathApp\controles.vcx con los botones Locate, Ignore, Cancel, Help

Lo curioso es que despues de ejecutar alguna otra pantalla que funciona bien, el error no vuelve a salir. Aparentemente se carga en memoria y luego lo utiliza de ahi.

Aclaro que al inicio de mi sistema tengo el SET CLASSLIB TO controles

Alguno me puede orientar? Si necesitan mas info, me consultan.
Gracias de antemano.
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 Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Error Instantiating class

Publicado por Leonardo Daniel A. (497 intervenciones) el 01/03/2019 20:03:45
Hola... que extraño...

yo probe algo parecido con una libreria de clases que diseñe hace muchos años... y aun tengo la carpeta por ahi...

1
2
3
4
5
SET DEFAULT TO c:\MiAplicacion
SET CLASSLIB TO clases
 
_Screen.AddObject("miTextbox","ctextboxedicion")
_Screen.miTextbox.Visible = .t.

y oForm ?? es un formulario que ya se esta ejecutando ?? porque lo probe tambien asi creando un prg y puse un boton en el formulario

do prueba.prg

y en prueba.prg puse

1
2
fLogin.AddObject("miTextbox","ctextboxedicion")
fLogin.miTextbox.Visible = .t.

y funiona perfectamente....

cual es el objetivo de agregar ese objeto dinamicamente ?
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

Error Instantiating class

Publicado por Edu (8 intervenciones) el 01/03/2019 20:57:19
Ya lo solucioné, aunque no quede contento del todo.
El objetivo de agregar dinamicamente es que el sistema permite armar reportes personalizados. Para ello, se programa dinamicamente la pantalla donde se solicitan los filtros. Esto se hace desde un prg externo, para poder modificar y compilarlo sin tocar el exe.

Por lo que pude ver, FOX se pierde con los paths y las librerias cuando se ejecuta desde un prg externo. Lo resolvi, agregando una funcion en un prg del proyecto, de la siguiente forma:

1
2
3
4
5
6
7
PROCEDURE AgregarControl(oForm, cNombreObjeto, cClaseObjeto)
	TRY
		oForm.Addobject(cNombreObjeto, cClaseObjeto)
	CATCH TO oException
		THROW crearError(oException)
	ENDTRY
ENDPROC

Entonces desde el prg externo, en vez de hacer oform.addobject("mitxt", "clstxt"), llamo a esta funcion.
Con eso funciona bien.
Gracias por la respuesta. Saludos
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