none
Listar todos os Eventos do form RRS feed

  • Pergunta

  • Boa tarde.

    Estou tentando criar um processo de monitoria.

    Parra isso, quero saber todas as ações que o usuário está tomando dentro de um formulário.

    Public Sub SalvarAcesso(ByVal Form As String, ByVal AcaoExecutada As opAcoes, _

                                     Optional ByVal Procedimento As String = "", Optional ByVal BreveDescricao As String = "", _

                                     Optional ByVal StatusProcedimento As String = "")

            Dim Executar As String

            Dim MATRICULA As String = strUser.Substring(0, 15 - (15 - strUser.Length))

            Dim MAQUINA As String = strComputer.Substring(0, 30 - (30 - strComputer.Length))

            Dim FORMULARIO As String = Form.Substring(0, 30 - (30 - Form.Length))

            Dim ACAO As String = AcaoExecutada.ToString.Substring(0, 1000 - (1000 - AcaoExecutada.ToString.Length))

            Dim SCRIPT As String = Procedimento.Substring(0, 1000 - (1000 - Procedimento.Length))

            Dim DESCRICAO As String = BreveDescricao.Substring(0, 1000 - (1000 - BreveDescricao.Length))

            Dim STATUS As String = StatusProcedimento.Substring(0, 100 - (100 - StatusProcedimento.Length))

            Dim VERSAO_COC As String = Application.ProductVersion

            Executar = "Exec SYS_INSERIR_ACESSO '" & MATRICULA & "','" & MAQUINA & "','" & FORMULARIO & "'," & _

                "'" & ACAO & "','" & SCRIPT & "','" & DESCRICAO & "','" & STATUS & "','" & VERSAO_COC & "'"

            ExecutarProcedimento(Executar, cl_Bancos.bcoMonitoramentoAcessos, Abortar.S)

        End Sub

        Public Sub MonitorarAcessos(ByVal Frm As Form)

            AddHandler Frm.Load, _

                (Function(a, b)

                     SalvarAcesso(Frm.Name, opAcoes.Acessar, "Abrindo Form: " & Frm.Name, "Evento Loading", "OK")

                     Return 1

                 End Function)

            AddHandler Frm.FormClosing, _

                (Function(a, b)

                     SalvarAcesso(Frm.Name, opAcoes.Fechar, "Fechando Form: " & Frm.Name, "Evento Closing", "OK")

                     Return 1

                 End Function)

            For Each c As Control In Frm.Controls

                Dim Bot As Button = TryCast(c, Button)

                If Not Bot Is Nothing Then

                    AddHandler (DirectCast(c, Button).Click), _

                    (Function(a, b)

                         SalvarAcesso(Frm.Name, opAcoes.ExecutarProcedimento, " Clique no Botão: " & Bot.Name, "Esse registros é gerado após a conclusão dos eventos do Botão. Não representa o Status ou os argumentos do Botão.", "OK")

                         Return 1

                     End Function)

                End If

            Next

        End Sub

    Mas não quero salvar apenas o procedimento que está sendo executado, mas sim, quais parâmetros foram atribuídos à ele.

    Ex:

    Ao clicar em um botão, eu irei abrir um formulário,

    No evento sub new do formulário existe o parâmetro de "FormulárioOrigem", "DescricaoParametro"

    Queria saber como faço para que seja listado em uma Array todos parâmetros que foram passados.

    dim frm as new frm_xxx(me.name,"Parametro 2")

    frm.showdialog

    Quero listar em uma array

    me.name,"Parametro 2"

    Obrigado.


    LFBit

    sexta-feira, 3 de agosto de 2012 17:06

Todas as Respostas

  • http://blog.locaweb.com.br/tecnologia/utilizando-aspectos-em-c-com-post-sharp/

    Pode usar o framework PostSharp, para interceptar os métodos antes e depois que eles ocorram.

    segunda-feira, 6 de agosto de 2012 18:20
  • Obrigado Danimar,

    Mas não é o que procuro.

    Quero desenvolver um objeto específico, que poderá ser usado por vários programas quando for necessário.

    Atualmente, uso uma função que incluo em todos os eventos .click ao dar o Load no Form.

    Entretanto, é um processo não muito funcional, pensando que posso ter outras ações que eu queira validar.

    Mas obrigado.


    LFBit

    quarta-feira, 5 de setembro de 2012 21:37
  • Como voce pretente listar os valores?

    Pra que isso seja possivel,precisa-se manter o objeto na memoria,senao os valores gravados em um list/array irão se perder.

    para inserir os itens,use isto:

        Dim _val As List(Of String)
    
        Public Sub New(ByVal _valor As String)
            InitializeComponent()
            _val.Add(_valor)
    
        End Sub
    Ou senao,gravar um log do form em um txt,xml...


    Microsoft Technology Associate (MTA)



    • Editado Eduardo xUni quinta-feira, 6 de setembro de 2012 12:40
    quinta-feira, 6 de setembro de 2012 12:36
  • Eduardo..

    Esse procedimento que você me passou funciona, mas entra no mesmo estágio em que eu estava.

    O que acontece, é que ao iniciar o formulário, eu teria que inserir esse código... Ou seja, teria que usar esse código em TODOS os forms  que eu queira monitorar.. Certo?

    Talvez eu não esteja sendo muito claro com o que quero.

    Imagine que em meu trabalho eu desenvolva Uns 5 programas por semana. Em cada um deles eu terei umas 20 ou mais forms... Para cada uma delas eu terei que inserir esse códio que você me passou ou o procedimento que estou usando atualmente.

    Minha ideia é talvez criar uma espece de componente, que quando inserido ao formulário ele já faça essa monitoria. O problema é que não estou conseguindo montar essa lógica desse componente.

    Espero que agora eu tenha conseguido explicar melhor. rsrsrs

    Obrigado mesmo assim.


    LFBit

    sábado, 8 de setembro de 2012 14:18
  • We..

    Crie uma DLL e importe ela no seu projeto,na mesma logica que eu passei pra voce,o Sub New() é generico,só importa ela e ir chamando,dentro da DLL tem a logica pra criar o log saka.

    Bom vou fazer um exemplo com classe..

    Segue:

    Imports WindowsApplication1.pacote_
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim _frm As New Form2(Me.Name)
            _frm.Show()
        End Sub
    End Class
    

    Namespace pacote_
        Public Class Class1
            Public Sub New(ByVal _form As String)
                MsgBox("Fui aberto por " & _form)
                'GRAVA UM LOG.
            End Sub
        End Class
    End Namespace
    

    Imports WindowsApplication1.pacote_
    Public Class Form2
        Sub New(ByVal _form As String)
            InitializeComponent()
            'SIMPLESMENTE PASSA O NOME DO FORM,E CLASSE SE ENCARREGA DE GRAVAR UM LOG
            Dim _cll As New Class1(_form)
        End Sub
    
    End Class



    Microsoft Technology Associate (MTA)

    sábado, 8 de setembro de 2012 15:47