Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Crear Objetos en tiempo de ejecucion.

Estas en el tema de Crear Objetos en tiempo de ejecucion. en el foro de Visual Basic clásico en Foros del Web. Hola, mi problema es el siguiente, me gustaria poder crear objetos en tiempo de ejecucion, en las faqs e visto algo pero no es realmente ...
  #1 (permalink)  
Antiguo 04/05/2006, 12:27
Avatar de Escalona  
Fecha de Ingreso: mayo-2005
Mensajes: 70
Antigüedad: 19 años
Puntos: 0
Crear Objetos en tiempo de ejecucion.

Hola, mi problema es el siguiente, me gustaria poder crear objetos en tiempo de ejecucion, en las faqs e visto algo pero no es realmente lo ke busco. Yo lo ke kiero es crear objetos en un modulo externo, y sin hacer referencia a ningun otro objeto de ningun formulario. Por ejemplo crear un control TIMER, y usar el evento timer de éste mismo control dentro del modulo. No se si me entendisteis bien, sino os vuelvo a explicar.
Gracias por vuestras respuestas.
  #2 (permalink)  
Antiguo 04/05/2006, 16:03
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Hay un código de la página del Guille que puede que te sirva.

http://www.elguille.info/VB/objetos/copiar_objetos.htm

Salu2!
  #3 (permalink)  
Antiguo 04/05/2006, 17:23
Avatar de [EX3]  
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 1 mes
Puntos: 1
Cita:
Por ejemplo crear un control TIMER, y usar el evento timer de éste mismo control dentro del modulo.
No puedes crear un control en un modulo ya que el modulo no es un formulario y no seria posible instanciar el control. Si lo que preguntas es si se puede crear un control Timer en un modulo la respuesta es no ya que se trata de un control. Sin embargo te puedes hacer un Timer desde el API de Windows que seria mas o menos lo mismo:

Form1.frm
Código:
Option Explicit

Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

Dim TimerId As Long ' Guarda el identificador del Timer.

Public Var As Long

Private Sub Form_Load()
' Crea un Timer y le asocia un procedimiento como rutina de evento:
TimerId = SetTimer(Me.hWnd, 0, 1000, AddressOf MiRutinaDeEvento)

End Sub

Private Sub Form_Unload(Cancel As Integer)
' Destruye el Timer:
KillTimer Me.hWnd, TimerId

End Sub
Module1.bas
Código:
Public Sub MiRutinaDeEvento()
Form1.Var = Form1.Var + 1

Form1.Cls
Form1.Print Form1.Var

End Sub
El evento que ejecuta el Timer tiene que ser extrictamente un procedimiento sin argumentos y debe estar obligatoriamente declarado en un Modulo *.bas, de lo contrario no funcionara. Los Timer del API, al igual que los controles Timer de VB, se ejecutan en un hilo de ejecucion indepentiente sin interrumpir la ejecucion principal del programa.

Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.

  #4 (permalink)  
Antiguo 04/05/2006, 23:46
Avatar de darkhack  
Fecha de Ingreso: marzo-2005
Mensajes: 654
Antigüedad: 19 años, 1 mes
Puntos: 3
En las faq's hay varios ejemplos de como hacerlo
__________________
Dios solo nos dio el 0 y el 1 pero con eso hemos hecho maravillas
1er dia te espantas, 2° te desesperas,3° buscas ayuda y 4°....Adios
  #5 (permalink)  
Antiguo 05/05/2006, 02:19
Avatar de Escalona  
Fecha de Ingreso: mayo-2005
Mensajes: 70
Antigüedad: 19 años
Puntos: 0
Gracias por las respuestas a todos, me kedo con la opcion de EX3.Hasta otra!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:10.