Script Control

Pequeña duda:
¿El componente de Visual de ScriptControl no me deja añadir instancias nuevas de objetos en tiempo de ejecución y no se porque? Estoy programando en VB y estoy haciendo un programa para que el usuario meta código en un textbox para ejecutarlo, creé una clase de la cual quiero hacer instancias pero no se deja... Otra cosa que me trae en ascuas es que si añades un objeto en el scriptcontrol tipo Test por ejemplo y después añades otro del mismo tipo me lo machaca, ¿eso es por culpa mía?

2 respuestas

Respuesta
1
No se si entendí bien la pregunta, pero te comento que si vos quieres instanciar un objeto de una clase definida adentro de tu proyecto, este proyecto tiene que ser un ActiveX DLL o ActiveX EXE y la clase tiene que tener la propiedad "instancing" a "5 - Multiuse", o "6 - Global Multiuse", porque si no la clase no es visible fuera del proyecto. Si tu proyecto es un Standard EXE, tienes que poner la clase en otro proyecto ActiveX DLL.
Con respecto a pisar los objetos, si usas AddObject para exponer objetos al script control, mientras lo añadas con distinto nombre, yo lo acabo de probar y no se pisan aunque sean del mismo tipo.
Puse la clase en un ActiveX DLL porque tengo un Standard EXE, hice como dijiste pero ahora como hago porque no me reconoce el modulo el Standard EXE, me podrías poner un ejemplo. Muchas gracias y perdona por tardar en preguntarte de nuevo.
Podes especificarme a que te referís con "como hago porque no me reconoce el modulo el Standard EXE"
¿Qué modulo?
Para hacer una prueba hace los siguiente:
Crea un nuevo proyecto Standard EXE
Pegale al Form1 el control Script Control, un CommandButton y un TextBox
Al TextBox ponele la propiedad Multiline a True y Scrollbars a 3-Both
Agrega al form el siguiente codigo
Private Sub Form_Load()
Text1.Text = "Sub Prueba" & vbNewLine & _
"dim x" & vbNewLine & _
"set x=createobject(""Project2.Class1"")" & vbNewLine _
& "x.Hola" & vbNewLine & _
"end sub"
End Sub
Private Sub Command1_Click()
ScriptControl1.AddCode Text1.Text
ScriptControl1.Run "Prueba"
End Sub
Hace "File" - "Add Project" en el menu de VB y añadi un proyecto nuevo ActiveX DLL
A la clase Class1 pegale el codigo:
Public Sub Hola()
MsgBox "Hola"
End Sub
Compila los dos proyectos así como están y ejecutalo, cuando hagas click en Command1 te va a aparecer el mensaje con el Hola, es decir va a ejecutar el código que esta en el textbox, el cual crea un objeto Class1 y ejecuta el método Hola
Pmmax.
Respuesta
1
Trabaje poco con scripControl pero no me pareció muy problemático.
Primero que nada si efectuaste un AddObject para agregar un objeto utilizable en tu código y definiste el lenguaje de programación, no deberías tener ningún problema.
Quizás lo que te convenga es probar el código que ingresas en el textbox en VB para saber que funciona y si elegís el lenguaje VBScript acordate que muchas cositas cambian cuando hablamos de objetos y definición de variables.
Por otro lado si añadís más de un objeto igual a tu ScripControl si le cambias el alias o sea el primer parámetro de AddObject yo creo que funciona.
Saludos y avisame si aun tienes el problema, si es así mandame un chacho del código para ver si se me ocurre alguna otra cosa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas