Enreas
Advertisement

Código del formulario (con Debug.Print)[]

Option Explicit On

Public Class frmPruebaTraza

  Private Sub btnBoton1_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles btnBoton1.Click
    Debug.Print( _
      System.Reflection.MethodBase.GetCurrentMethod().Name _
    )
  End Sub

  Private Sub btnBoton2_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles btnBoton2.Click
    Debug.Print( _
      System.Reflection.MethodBase.GetCurrentMethod().Name _
    )
  End Sub

  Private Sub btnBoton3_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles btnBoton3.Click
    Debug.Print( _
      System.Reflection.MethodBase.GetCurrentMethod().Name _
    )
  End Sub

End Class

Código del formulario (con la clase Traza)[]

Option Explicit On

Public Class frmPruebaTraza

  Private MiTraza As New Traza

  Private Sub btnBoton1_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles btnBoton1.Click
    MiTraza.Mostrar( _
      System.Reflection.MethodBase.GetCurrentMethod().Name _
    )
  End Sub

  Private Sub btnBoton2_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles btnBoton2.Click
    MiTraza.Mostrar( _
      System.Reflection.MethodBase.GetCurrentMethod().Name _
    )
  End Sub

  Private Sub btnBoton3_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles btnBoton3.Click
    MiTraza.Mostrar( _
      System.Reflection.MethodBase.GetCurrentMethod().Name _
    )
  End Sub

  Private Sub frmPruebaTraza_Load( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles MyBase.Load
    radNinguna.Checked = True
  End Sub

  Private Sub radNinguna_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles radNinguna.Click
    MiTraza.Tipo = Traza.TipoTraza.Ninguna
    radNinguna.Checked = True
  End Sub

  Private Sub radInmediato_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles radInmediato.Click
    MiTraza.Tipo = Traza.TipoTraza.Inmediato
    radInmediato.Checked = True
  End Sub

  Private Sub radVentana_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles radVentana.Click
    MiTraza.Tipo = Traza.TipoTraza.Ventana
    radVentana.Checked = True
  End Sub

  Private Sub radArchivo_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
  ) Handles radArchivo.Click
    MiTraza.Tipo = Traza.TipoTraza.Archivo
    radArchivo.Checked = True
  End Sub

End Class

Código de la clase Traza[]

Option Explicit On

Public Class Traza

  Public Enum TipoTraza As Byte
    Ninguna = 0
    Inmediato = 1
    Ventana = 2
    Archivo = 3
  End Enum

  Private trzTipo As TipoTraza = TipoTraza.Ninguna
  Private sTraza As String
  Private frmMiTraza As frmTraza

  Protected Overrides Sub Finalize()

    Select Case trzTipo
      Case TipoTraza.Inmediato
        CerrarInmediato()
      Case TipoTraza.Ventana
        CerrarVentana()
      Case TipoTraza.Archivo
        CerrarArchivo()
    End Select

    MyBase.Finalize()

  End Sub

  Public Property Tipo() As TipoTraza

    Get
      Tipo = trzTipo
    End Get

    Set(ByVal QueTipoTraza As TipoTraza)
      Select Case QueTipoTraza
        Case TipoTraza.Ninguna
          Select Case trzTipo
            Case TipoTraza.Inmediato
              CerrarInmediato()
            Case TipoTraza.Ventana
              CerrarVentana()
            Case TipoTraza.Archivo
              CerrarArchivo()
          End Select
        Case TipoTraza.Inmediato
          Select Case trzTipo
            Case TipoTraza.Ventana
              CerrarVentana()
            Case TipoTraza.Archivo
              CerrarArchivo()
          End Select
          AbrirInmediato()
        Case TipoTraza.Ventana
          Select Case trzTipo
            Case TipoTraza.Inmediato
              CerrarInmediato()
            Case TipoTraza.Archivo
              CerrarArchivo()
          End Select
          AbrirVentana()
        Case TipoTraza.Archivo
          Select Case trzTipo
            Case TipoTraza.Inmediato
              CerrarInmediato()
            Case TipoTraza.Ventana
              CerrarVentana()
          End Select
          AbrirArchivo()
      End Select
      trzTipo = QueTipoTraza
    End Set

  End Property

  Public Sub Mostrar(ByVal Que As Object)
    If trzTipo = TipoTraza.Ninguna Then Exit Sub
    Select Case trzTipo
      Case TipoTraza.Inmediato
        MostrarInmediato(Que)
      Case TipoTraza.Ventana
        MostrarVentana(Que)
      Case TipoTraza.Archivo
        MostrarArchivo(Que)
    End Select
  End Sub

  Private Sub MostrarInmediato(ByVal Que As Object)
    Debug.Print(Que)
  End Sub

  Private Sub MostrarVentana(ByVal Que As Object)
    With frmMiTraza
      .txtTraza.Text &= Que & vbCrLf
      .txtTraza.SelectionStart = Len(.txtTraza.Text)
    End With
  End Sub

  Private Sub MostrarArchivo(ByVal Que As Object)
    My.Computer.FileSystem.WriteAllText( _
      sTraza, Que & vbCrLf, True _
    )
  End Sub

  Private Sub AbrirInmediato()
    trzTipo = TipoTraza.Inmediato
    InicioTraza()
  End Sub

  Private Sub AbrirVentana()
    trzTipo = TipoTraza.Ventana
    frmMiTraza = New frmTraza
    frmMiTraza.Show()
    InicioTraza()
  End Sub

  Private Sub AbrirArchivo()
    trzTipo = TipoTraza.Archivo
    sTraza = Application.StartupPath
    If Right(sTraza, 1) <> "\" Then
      sTraza &= "\"
    End If
    sTraza &= "traza.txt"
    InicioTraza()
  End Sub

  Private Sub CerrarInmediato()
    FinalTraza()
  End Sub

  Private Sub CerrarVentana()
    FinalTraza()
    frmMiTraza.Close()
  End Sub

  Private Sub CerrarArchivo()
    FinalTraza()
  End Sub

  Private Sub InicioTraza()

    Dim sMensaje As String = ""
    Dim sBarra As String = ""
    Dim i As Integer = 0

    sMensaje = "Inicio traza de " & Application.ExecutablePath
    For i = 1 To Len(sMensaje)
      sBarra &= "-"
    Next i

    Mostrar(sBarra)
    Mostrar(sMensaje)
    Mostrar("Fecha: " & DateTime.Now.ToString("dd-MM-yyyy"))
    Mostrar("Hora : " & DateTime.Now.ToString("HH:mm:ss"))
    Mostrar(sBarra)

  End Sub

  Private Sub FinalTraza()

    Dim sMensaje As String = ""
    Dim sBarra As String = ""
    Dim i As Integer = 0

    sMensaje = "Final traza de " & Application.ExecutablePath
    For i = 1 To Len(sMensaje)
      sBarra &= "-"
    Next i

    Mostrar(sBarra)
    Mostrar(sMensaje)
    Mostrar("Fecha: " & DateTime.Now.ToString("dd-MM-yyyy"))
    Mostrar("Hora : " & DateTime.Now.ToString("HH:mm:ss"))
    Mostrar(sBarra)

  End Sub

End Class
Advertisement