none
Chamar Função em formualrios RRS feed

  • Pergunta

  • Tenho uma questão.. Estou construindo um projeto em vb.net, sou iniciante, e estou com a seguinte duvida:

    no vb6 eu tinha a seguinte estrutura  no formualrio

    Public subecutar(acao as interger)

    select case acao

    Case Salvar

    ....

    end sub

    so q esta funcao nao participava de todos os forms..

    e no mdi eu colocav

    activeform.executar (acao la)

    e no vb.net ... como eu faço isso ja que isso nao e uma funcao q ocore em todos os formaurios ??/

    segunda-feira, 28 de junho de 2010 13:43

Respostas

  • Olá Marcelo,

    Eu acredito que você possa criar classes e nelas os seus métodos. Assim você pode instanciar o objeto e chamar seus métodos de onde precisar.

    Espero ter ajudado, ao menos um pouco.

    []s

    PS: Se o post foi útil, classifique-o como resposta! ;-)


    Carlos Monteiro
    MCP ASP.Net C#
    twitter: @carloshkd
    http://www.wx7.com.br
    segunda-feira, 28 de junho de 2010 14:07
  • Vc terá que criar uma interface com o método desejado e implementar nos formulários.

    Interface:

    Public Interface iFormBase
      Sub ExecutarAcao(ByVal Acao As Integer)
    End Interface

    Implementação do Form

    Public Class Form1
      Implements iFormBase
    
      Public Sub ExecutarAcao(ByVal Acao As Integer) Implements iFormBase.ExecutarAcao
        Throw New NotImplementedException
      End Sub
    End Class

    Chamada do Midi

        Dim _Form As iFormBase = Nothing
    
        If TypeOf ActiveForm Is iFormBase Then
          _Form = CType(ActiveForm, iFormBase)
          _Form.ExecutarAcao(1)
        End If

    Um grande abraço,

    Anderson Calixto

     

    segunda-feira, 28 de junho de 2010 14:11
  • Marcelo,

        Em linguagens orientadas para Objetos, você não utiliza funções.

        Para seu caso, você tem 3 alternativas:

        1) Implementar a solução descrita pelo Carlos (criando objetos de acordo com seu contexto);

        2) Criar um "formulário base" conforme proposto pelo Anderson;

        3) Criar uma classe com rotinas "auxiliares" ou no seu caso, uma classe chamada "ExecutorAcoes" com seu método Executar marcado como estático (Shared em VB). Com isso esta rotina faz o papel de uma função dentro de um objeto que não precisa ser instanciado.

        Mais cedo ou mais tarde você vai cair na solução do Carlos. Objetos lidam com responsabilidade. Cabe um estudo sobre isso.

        A solução do Anderson é interessante, mas cabe uma ressalva: Herança só deve ser usada quando você tem um relacionamento onde se lê: "É UM". Tipo: Cachorro é um animal. Parece simples, mas já vi implementações onde foi utilizada a alternativa descrita e para "aproveitar" apenas 1 método. Isto é errado. Não se usa herança para reaproveitar apenas uma funcionalidade. Sempre deve-se reaproveitar TODAS as funcionalidades SEMPRE ou usar agregação.

      

     

    segunda-feira, 28 de junho de 2010 20:19

Todas as Respostas

  • Olá Marcelo,

    Eu acredito que você possa criar classes e nelas os seus métodos. Assim você pode instanciar o objeto e chamar seus métodos de onde precisar.

    Espero ter ajudado, ao menos um pouco.

    []s

    PS: Se o post foi útil, classifique-o como resposta! ;-)


    Carlos Monteiro
    MCP ASP.Net C#
    twitter: @carloshkd
    http://www.wx7.com.br
    segunda-feira, 28 de junho de 2010 14:07
  • Vc terá que criar uma interface com o método desejado e implementar nos formulários.

    Interface:

    Public Interface iFormBase
      Sub ExecutarAcao(ByVal Acao As Integer)
    End Interface

    Implementação do Form

    Public Class Form1
      Implements iFormBase
    
      Public Sub ExecutarAcao(ByVal Acao As Integer) Implements iFormBase.ExecutarAcao
        Throw New NotImplementedException
      End Sub
    End Class

    Chamada do Midi

        Dim _Form As iFormBase = Nothing
    
        If TypeOf ActiveForm Is iFormBase Then
          _Form = CType(ActiveForm, iFormBase)
          _Form.ExecutarAcao(1)
        End If

    Um grande abraço,

    Anderson Calixto

     

    segunda-feira, 28 de junho de 2010 14:11
  • Marcelo,

        Em linguagens orientadas para Objetos, você não utiliza funções.

        Para seu caso, você tem 3 alternativas:

        1) Implementar a solução descrita pelo Carlos (criando objetos de acordo com seu contexto);

        2) Criar um "formulário base" conforme proposto pelo Anderson;

        3) Criar uma classe com rotinas "auxiliares" ou no seu caso, uma classe chamada "ExecutorAcoes" com seu método Executar marcado como estático (Shared em VB). Com isso esta rotina faz o papel de uma função dentro de um objeto que não precisa ser instanciado.

        Mais cedo ou mais tarde você vai cair na solução do Carlos. Objetos lidam com responsabilidade. Cabe um estudo sobre isso.

        A solução do Anderson é interessante, mas cabe uma ressalva: Herança só deve ser usada quando você tem um relacionamento onde se lê: "É UM". Tipo: Cachorro é um animal. Parece simples, mas já vi implementações onde foi utilizada a alternativa descrita e para "aproveitar" apenas 1 método. Isto é errado. Não se usa herança para reaproveitar apenas uma funcionalidade. Sempre deve-se reaproveitar TODAS as funcionalidades SEMPRE ou usar agregação.

      

     

    segunda-feira, 28 de junho de 2010 20:19