none
Deshabilitar timers por una funcion RRS feed

  • Pregunta

  •  

    HOLA:

     

    BUENOS DIAS, UN SALUDO A TODOS LOS QUE LEAN EL POST

     

    TENGO AHORA UN NUEVO PROBLEMA; COMO SIEMPRE JEJEJE, LO QUE DESEO HACER ES UNA FUNCION QUE DESHABILITE MIS TIMERS QUE TENGO EN MI FORM (TODOS SABEMOS QUE SE VAN A LA BANDEJA DE COMPONENTES).

     

    POR ELLO NO SE COMO RECORRERLOS PUEDO RECORRER OBJETOS QUE ESTAN DENTRO DE MI FORM DE LA SIGUIENTE MANERA:

     

    Code Snippet

    Public Sub DeshabilitarTimers()

    'Declaro las varibles control

    Dim relojes As Control

    For Each relojes In Me.Controls

    If relojes.Enabled = True Then

    relojes.Enabled = False

    End If

    'relojes.Visible = Not relojes.Visible

    Next

    End Sub

     

     

    O una mas fácil que encontre:

     

    Code Snippet

    Public Sub DeshabilitarTimers()

    'Declaro las varibles control

    Dim relojes As Control

    For Each relojes In Me.Controls

    'If relojes.Enabled = True Then

    'relojes.Enabled = False

    'End If

    relojes.Visible = Not relojes.Visible

    Next

    End Sub

     

     

    Pero esto me ayuda con controles que estan dentro de un formulario, pero no se como recorer los controles que se encuentran en la bandeja de componenetes en este caso particular los timers.

     

    Alguien me podria ayudar

     

    Muchas gracias

     

    Jorge

    sábado, 15 de marzo de 2008 18:49

Respuestas

  • Lo pobre y y me funciono parte pero despues se trabo...

     

    De cualquier manera muchisimas gracias, ya lo pude resolver y te comparto el codigo que un amigo me paso y ya lo pobre y funciona:

     

    Code Snippet

    Public Sub DeshabilitarTimers()

    'Declaro las varibles control

    Dim relojes As System.ComponentModel.Component

    For Each relojes In Me.components.Components

    If (CType(relojes, Timer)).Enabled = True Then

    CType(relojes, Timer).Enabled = False

    End If

    Next

    End Sub

     

     

     

    Muchisimas gracias por toda tu atencion y mis reconocimientos a Marco de la empresa KED que me ayudo.

     

    Jorge

    martes, 25 de marzo de 2008 2:12

Todas las respuestas

  • Es que el timer no es un Control, sin no un Componente, recorre Me.components.Components y lo encontraras
    saludos

    sábado, 15 de marzo de 2008 22:16
  •  

    Antes que nada muchas gracias por tu respuesta solo tengo una pregunta y como declaro a la varibale relojes que es la que contiene los componentes(Timers) por que no puedo empeza el ciclo sin haberla declarado y cuando la quice declarar como componente no me sale.

     

    Te mando mi codigo:

     

    Code Snippet

    Imports System.Drawing

    'Imports System.Drawing.Drawing2D

    Public Class dibujando

    'Lo ocupo para manejar la posicion x de la elipse

    Dim i As Integer

    'Lo ocupo para manejar la posicion y de la elipse

    Dim j As Integer

     

    Private Sub dibujando_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

    'Creo un lienzo para expresar mi arte

    Dim lienzo As Graphics = Me.CreateGraphics

    'Le asigno un color

    lienzo.Clear(Color.Black)

    'Creo un lapicito para poder dibujar

    Dim lapiz As Pen = New Pen(Color.Blue, 10)

    'Creo un Ellipse en el punto donde demos click

    lienzo.DrawEllipse(New Pen(Color.Blue, 10), New Rectangle(e.X, e.Y, 10, 10))

    'Lo uso para el ancho

    i = e.X

    'Lo uso para manejar el alto

    j = e.Y

    'Siempre destruir el lienzo

    lienzo.Dispose()

    'Empiezo el movimiento

    'Por default siempre comienzo hacia abajo por la gravedad

    DeshabilitarTimers()

    TimerDerechaAbajo.Enabled = True

    End Sub

    Public Sub Limpiar()

    'Creo un nuevo lienzo

    Dim lienzo As Graphics = Me.CreateGraphics

    'Coloreo el Lienzo

    lienzo.Clear(Color.Black)

    'Siempre borrar los objetos cuando no los ocupo

    lienzo.Dispose()

    End Sub

    'E inicio mi obra de arte

    Private Sub TimerDerechaAbajo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerDerechaAbajo.Tick

    'Creo un lienzo para poder dibujar

    Dim lienzo As Graphics = Me.CreateGraphics

    'Con esto day la ilusion de movimiento como si cayera

    i += 1

    j += 2

    'Limpio cada vez la pantalla nuevamente coloreando

    Limpiar()

    'Dibujo nuevamente la ellipse con el valor de cada posicion

    lienzo.DrawEllipse(New Pen(Color.Blue, 10), New Rectangle(i, j, 10, 10))

    'Siempre destruir el lienzo acabando de pintar

    lienzo.Dispose()

    'Si para algunos de los limites favor de mandar a llamar validacion

    Call Validar(i, j)

    End Sub

    Private Sub Validar(ByRef i As Integer, ByRef j As Integer)

    If i >= Me.Width - 20 Or j >= Me.Height - 20 Then

    'Una vez llegado la ellipse al final hay que dejar de dibujar

    TimerDerechaAbajo.Enabled = False

    'Aqui le voy a dar una nueva direccion

    Call EscogerLado(i, j)

    Else

    'Valido que llegue al final del formulario

    If i <= 0 Or j <= 0 Then

    TimerIzquierdaArriba.Enabled = False

    'Llamo a escoger lado

    Call EscogerLado(i, j)

    End If

    End If

    End Sub

    Public Sub EscogerLado(ByVal i As Integer, ByVal j As Integer)

    ' si llego al final del ancho

    If i >= Me.Width - 20 Then

    'MessageBox.Show("lado")

    'Lo tengo que regresar hacia la izquierda

    'Izquierda Abajo o izquierda Arriba

    ' TimerIzquierdaArriba.Enabled = True

    'Lo regreso hacia la derecha

    'TimerIzquierdaAbajo.Enabled = True

    DeshabilitarTimers()

    Else

    If j >= Me.Height - 20 Then

    'Recuerda usar j

    'Entonces llego al final del formulario

    ' MessageBox.Show("final")

    'Lo tengo que regresar hacia arriba

    'Arriba Derecha o Arriba Izquierda

    Else

    If i <= 0 Then

    ' MessageBox.Show("IZQUIERDO")

     

    Else

    'J es menor del ancho

    ' TimerDerechaAbajo.Enabled = True

    'MessageBox.Show("ARRIBA")

    End If

    End If

    End If

    End Sub

    Private Sub TimerIzquierdaArriba_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerIzquierdaArriba.Tick

    TimerDerechaAbajo.Enabled = False

    Dim lienzo As Graphics = Me.CreateGraphics

    i -= 1

    j -= 2

    Limpiar()

    Dim lapiz As Pen = New Pen(Color.Blue, 10)

    Dim rectangulo As Rectangle = New Rectangle(i, j, 10, 10)

    lienzo.DrawEllipse(lapiz, rectangulo)

    Call Validar(i, j)

    End Sub

    Private Sub TimerIzquierdaAbajo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerIzquierdaAbajo.Tick

    'Aqui declaro mi lienzo

    Dim lienzo As Graphics = Me.CreateGraphics

    'Aqui genero la ilusion de movimiento

    i -= 1

    j += 2

    'Aqui limpio siempre la pantalla

    Limpiar()

    'El lapiz para poder pintar

    Dim lapiz As Pen = New Pen(Color.Blue, 10)

    'Un rectangulo en el que dibujaremos la elipse

    Dim rectangulo As Rectangle = New Rectangle(i, j, 10, 10)

    'Aqui dibujo la elipse

    lienzo.DrawEllipse(lapiz, rectangulo)

    'Llamo a validar

    Call Validar(i, j)

    lienzo.Dispose()

     

    End Sub

     

     

    Private Sub TimerDerechaArriba_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerDerechaArriba.Tick

    'DIbujo mi lienzo

    Dim lienzo As Graphics = Me.CreateGraphics

    'Aqui manejo mis variables para simular movimiento

    i += 1

    j -= 2

    'Limpio el lienzo

    Limpiar()

    'Creo el lapiz para dibujar

    Dim lapiz As Pen = New Pen(Color.Blue, 10)

    'Creo el rectangulo para poder hacer la ellipse

    Dim rectangulo As Rectangle = New Rectangle(i, j, 10, 10)

    'Creo la ellipse

    lienzo.DrawEllipse(lapiz, rectangulo)

    'valido hacia donde va

    Call Validar(i, j)

    'Libero memoria

    lienzo.Dispose()

    End Sub

    Public Sub DeshabilitarTimers()

    'Declaro las varibles control

    Dim relojes As Timer

    For Each relojes In Me.components.Components

    If relojes.Enabled = True Then

    relojes.Enabled = False

    End If

    'relojes.Visible = Not relojes.Visible

    Next

    End Sub

    End Class

     

     

    Muchas gracias por todo
    martes, 18 de marzo de 2008 21:18
  • Tu variable puede ser

     

    System.ComponentModel.IComponent

     

    Saludos
    miércoles, 19 de marzo de 2008 16:58
  • Muchas gracias por todo...

     

    Llegando a mi casita lo voy a intentar hacer de la siguiente manera:

     

     

    Code Snippet

    Public Sub DeshabilitarTimers()

     

    dim relojes as System.ComponentModel.IComponent

     

    For each relojes in Me.Components.Components

    If relojes.Enabled = True Then

    relojes.Enabled = False

    End if

    Next

     

    End  Sub

     

     

     

    Gracias por todo
    miércoles, 19 de marzo de 2008 17:57
  • Hola:

     

    Ya lo intente y no de echo declare la variable como me dices y me manda que enabled no es miembro de

    System.ComponentModel.IComponent

     

    ¿Me podrias ayudar ?

     

     

    Jorge

    lunes, 24 de marzo de 2008 21:27
  • Jorge, prueba con esto:

     

    Code Snippet

    For Each c As Object In Me.components.Components

    If c.GetType Is GetType(System.Windows.Forms.Timer) Then

    Dim tmr As Windows.Forms.Timer

    tmr = CType(c, System.Windows.Forms.Timer)

    tmr.Enabled = True

    End If

    Next

     

     

     

    Saludos
    martes, 25 de marzo de 2008 2:05
  • Lo pobre y y me funciono parte pero despues se trabo...

     

    De cualquier manera muchisimas gracias, ya lo pude resolver y te comparto el codigo que un amigo me paso y ya lo pobre y funciona:

     

    Code Snippet

    Public Sub DeshabilitarTimers()

    'Declaro las varibles control

    Dim relojes As System.ComponentModel.Component

    For Each relojes In Me.components.Components

    If (CType(relojes, Timer)).Enabled = True Then

    CType(relojes, Timer).Enabled = False

    End If

    Next

    End Sub

     

     

     

    Muchisimas gracias por toda tu atencion y mis reconocimientos a Marco de la empresa KED que me ayudo.

     

    Jorge

    martes, 25 de marzo de 2008 2:12