Marquesina

Señores expertos:
Estoy intentando programar una marquesina en Visual Basic 2008 en la siguiente forma:
Private Sub Form1_Load
   Timer1.Interval=1000
   Timer1.Enable=True
End Sub
Private Timer1_Tick
    If Me.Label1.Left <=1 then
      Try
         Me.Label1.Left= Form1.ActiveForm.Width -5
      Catch Ex as Exception
          MessageBox.Show(Ex.Message)     'aquí saca el error
      End Try
      Else
        Try
         Me.Label1.Left= Me.Label1.Left -5
        Catch Ex as Exception
           MessageBox.Show(Ex.Message)
        End Try
      End If
 End Sub
La marquesina escrita en el Label1 corre bien, pero a veces cuando el Label1 esta a la izquierda del formulario, cuando su valor .Left es < 1 saca un error que dice:
Referencia a objeto no establecida como instancia de un objeto
Si me pueden ayudar por qué sale este error les agradecería muchísimo
Jairo López
Bogotá - Colombia

1 respuesta

Respuesta
1
Puedo estar casi seguro que tu problema esta en la asignación de valor, cuando intentas acceder al formulario activo, Form1. ActiveForm, esta propiedad según te debería devolver el formulario activo de la aplicación... pero... no siempre es así, en ocasiones devuelve nothing (null) como es tu caso (razones, no se...), así que te sugeriría primero darle el foco al formulario que estas usando y después tratar de acceder a esta propiedad.
Señores expertos:
Estoy intentando programar una marquesina en Visual Basic 2008 en la siguiente forma:
Private Sub Form1_Load
   Timer1.Interval=1000
   Timer1.Enable=True
End Sub
Private Timer1_Tick
    If Me.Label1.Left <=1 then
      Try
         Me.Label1.Left= Form1.ActiveForm.Width -5
      Catch Ex as Exception
          MessageBox.Show(Ex.Message)     'aquí saca el error
      End Try
      Else
        Try
         Me.Label1.Left= Me.Label1.Left -5
        Catch Ex as Exception
           MessageBox.Show(Ex.Message)
        End Try
      End If
 End Sub
La marquesina escrita en el Label1 corre bien, pero a veces cuando el Label1 esta a la izquierda del formulario, cuando su valor .Left es < 1 saca un error que dice:
Referencia a objeto no establecida como instancia de un objeto
Si me pueden ayudar por qué sale este error les agradecería muchísimo
Jairo López
Bogotá - Colombia
Hola darkastaroth:
Le agradezco mucho su interés en ayudarme pero perdóneme por ser tan ignorante en la materia pero no entiendo su solución. Espero me aclare un poco
Hola darkastaroth:
Antes de la instrucción Form1.ActiveForm le coloqué Me.Focus()
Y parece que va a funcionar. Estoy haciendo las pruebas respectivas y le estaré informando
Gracias
Hola darkastaroth:
Le cuento que me volvió a fallar
Entonces tu problema es que en otra parte de tu código estas activando algo más, pon puntos de interrupción y verifica que ese valor que te recupera de la propiedad Form1. ActiveForm no sea null o en tu caso nothing, de ser así... mmm.. podrías evaluar que si es nothing, le ponga el foco.. y tratar de volver a recuperar el valor de la propiedad, algo así...
Try
         If Form1.ActiveForm=nothing Then
               Me.Focus();
         End If
         Me.Label1.Left= Form1.ActiveForm.Width -5
      Catch Ex as Exception
          MessageBox.Show(Ex.Message)     'aquí saca el error
      End Try
Espero se solucione de no ser así... haz un descripción más extensa de tu problema, incluyendo el contexto, y espero poder ayudarte a resolverlo.
Una cosa más, intentalo quitándole el 1 al form, es decir que solo quede Form. ActiveForm, intenta con esto antes de lo otro jejejeje
Hola darkastaroth
Continua la falla. Seguiré haciendo pruebas
Hola darkastaroth:
En internet encontré otra solución:
Private Sub Timer1_Tick
   Label1.Text=Label1.Text.Substring(1) & Label1.Text.Substring(0,1)
End Sub
Le agradezco mucho su interés en ayudarme
Que bien que hayas encontrado tu respuesta... aunque para ser sincero... entendí mal tu código... no supe para que lo querías.. creo que por eso no te pude dar la solución correcta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas