terça-feira, 19 de julho de 2016

VB.net - Habilitando e desabilitando controles automaticamente

Olá PessoALL,

acabei de desenvolver esta rotina e acho que pode ser bem útil para muitos desenvolvedores, ela consiste em habilitar e desabilitar os controles de um formulário automaticamente, está rotina deve ser colocada dentro de um módulo, verifiquem e deixem seus comentários.

Boa sorte.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Module Bloquear    
    Public Sub BloquearCamposTela(pForm As Form, pTipoCampo() As String, pStatus As Boolean, pExcecoes() As String)
        'Utilização
        '----------
        'Bloqueia ou libera os campos da de um formulário passado como parâmentro (pForm)
        'Os campos que não podem ser bloqueados devem ser inseridos como array no parâmetro pExcecoes utilizando o seu nome
        'Deve ser informado se os campos serão bloqueados ou liberados no parâmetro pStatus

        'Parâmetros
        '----------
        'pForm: Form - Formulário que possui os controles 
        'pTipoCampo: Array - Contém os nomes dos controles [windows.forms] ex: {"TextBox","ListBox"}
        'pStatus: Booleano - Status da propriedade enabled dos controles, "True" Bloqueia e "False" não faz nada
        'pExcecoes: Array - Contém os nomes do controles [propriedade name] ex: {"Txt_Nome_Usuario","Btn_Salvar"}

        'Exemplo
        '-------
        'BloquearCamposTela(Me, {"TextBox", "ListBox", "Button"}, True, {"Txt_Nome_Usuario","Btn_Salvar"})
        'No exemplo acima serão bloqueados todos os objetos TextBox, ListBox e Button
        'e não bloquear os controles cujo nome sejam Txt_Nome_Usuario e Btn_Salvar
        '------------------------------------------------------------------------------
        Dim NaoBloqueia As Boolean

        For Each Ctl As Control In pForm.Controls
            NaoBloqueia = False
            For x = 0 To pExcecoes.Count - 1
                If UCase(Ctl.Name) = UCase(pExcecoes(x)) Then
                    NaoBloqueia = True
                End If
            Next
            If Not NaoBloqueia Then
                vCtlName = UCase(Ctl.GetType.Name)
                'Pesquiso se no array pTipoCampo a existência do controle encontrado
                '-------------------------------------------------------------------
                Dim Encontrou As String = Array.Find(pTipoCampo, AddressOf EncontrarNoArray)

                If Encontrou <> Nothing Then
                    Ctl.Enabled = Not pStatus
                End If
                '-------------------------------------------------------------------
            End If
        Next
    End Sub

    Public Function EncontrarNoArray(ByVal pStr As String) As Boolean
        'Exemplo:
        'Dim Encontrou As String = Array.Find(pTipoCampo, AddressOf EncontrarNoArray)
        'If Encontrou <> Nothing Then
        '    <code...>
        'End If
        'Onde pTipoCampo é um array
        '----------------------------------------------------------------------------
        Return IIf(UCase(pStr).EndsWith(vCtlName), True, False)
    End Function

End Module

VB.net - Habilitando e desabilitando controles automaticamente

Olá PessoALL,

acabei de desenvolver esta rotina e acho que pode ser bem útil para muitos desenvolvedores, ela consiste em habilitar e desabilitar os controles de um formulário automaticamente, está rotina deve ser colocada dentro de um módulo, verifiquem e deixem seus comentários.

Boa sorte.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Module Bloquear    
    Public Sub BloquearCamposTela(pForm As Form, pTipoCampo() As String, pStatus As Boolean, pExcecoes() As String)
        'Utilização
        '----------
        'Bloqueia ou libera os campos da de um formulário passado como parâmentro (pForm)
        'Os campos que não podem ser bloqueados devem ser inseridos como array no parâmetro pExcecoes utilizando o seu nome
        'Deve ser informado se os campos serão bloqueados ou liberados no parâmetro pStatus

        'Parâmetros
        '----------
        'pForm: Form - Formulário que possui os controles 
        'pTipoCampo: Array - Contém os nomes dos controles [windows.forms] ex: {"TextBox","ListBox"}
        'pStatus: Booleano - Status da propriedade enabled dos controles, "True" Bloqueia e "False" não faz nada
        'pExcecoes: Array - Contém os nomes do controles [propriedade name] ex: {"Txt_Nome_Usuario","Btn_Salvar"}

        'Exemplo
        '-------
        'BloquearCamposTela(Me, {"TextBox", "ListBox", "Button"}, True, {"Txt_Nome_Usuario","Btn_Salvar"})
        'No exemplo acima serão bloqueados todos os objetos TextBox, ListBox e Button
        'e não bloquear os controles cujo nome sejam Txt_Nome_Usuario e Btn_Salvar
        '------------------------------------------------------------------------------
        Dim NaoBloqueia As Boolean

        For Each Ctl As Control In pForm.Controls
            NaoBloqueia = False
            For x = 0 To pExcecoes.Count - 1
                If UCase(Ctl.Name) = UCase(pExcecoes(x)) Then
                    NaoBloqueia = True
                End If
            Next
            If Not NaoBloqueia Then
                vCtlName = UCase(Ctl.GetType.Name)
                'Pesquiso se no array pTipoCampo a existência do controle encontrado
                '-------------------------------------------------------------------
                Dim Encontrou As String = Array.Find(pTipoCampo, AddressOf EncontrarNoArray)

                If Encontrou <> Nothing Then
                    Ctl.Enabled = Not pStatus
                End If
                '-------------------------------------------------------------------
            End If
        Next
    End Sub

    Public Function EncontrarNoArray(ByVal pStr As String) As Boolean
        'Exemplo:
        'Dim Encontrou As String = Array.Find(pTipoCampo, AddressOf EncontrarNoArray)
        'If Encontrou <> Nothing Then
        '    <code...>
        'End If
        'Onde pTipoCampo é um array
        '----------------------------------------------------------------------------
        Return IIf(UCase(pStr).EndsWith(vCtlName), True, False)
    End Function

End Module

domingo, 17 de julho de 2016

VB.Net Criando um novo arquivo

Este exemplo cria um arquivo de texto vazio no caminho especificado usando o método Create na classe File.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Imports System
Imports System.IO
Imports System.Text

Module Module1

    Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' Create or overwrite the file.
        Dim fs As FileStream = File.Create(path)

        ' Add text to the file.
        Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")
        fs.Write(info, 0, info.Length)
        fs.Close()
    End Sub

End Module

Executando Aplicativos Externos pelo VB.NET

Olá pessoALL,
eventualmente necessitamos executar algum aplicativo a partir de nosso código, por exemplo o Word, o Excel, o Notepad etc.

Para fazer isso podemos usar a Classe Process do Namespace System.Diagnostics.

Conseguimos fazer isso de duas formas diferentes:

Sem criar uma instância
?
1
System.Diagnostics.Process.Start("excel.exe")
Para passar algum parâmetro, por exemplo o nome do arquivo que será aberto fazemos assim:

1
System.Diagnostics.Process.Start("excel.exe", "C:\teste.xlsx")

Criando uma instância

Utilizando variáveis do tipo Process ou ProcessStartInfo conseguimos ter um controle sobre o aplicativo que desejamos executar.

Aqui temos algumas propriedades da classe ProcessStartInfo:
PropriedadeDescrição
FileNameNome do Aplicativo – Ex: Excel.exe
ArgumentsParâmetros que o Aplicativo receberá
WindowStyleEstilo da Janela: Maximizada, Minimizada…
WorkingDirectoryCaminho da Pasta do Aplicativo
Criando uma variável do tipo ProcessStartInfo conseguimos acessar as propriedades acima.
1
2
3
4
Dim processo As New Process
processo.StartInfo.FileName = "Excel.exe"
processo.StartInfo.Arguments = "C:\teste.xlsx"
processo.Start()
Criando uma variável do tipo Process acessamos estas propriedades dentro da propriedade ProcessStartInfo da Classe Process  
1
2
3
4
Dim processo As New ProcessStartInfo
processo.FileName = "Excel.exe"
processo.Arguments = "C:\teste.xlsx"
Process.Start(processo)
Utilizando a classe Process podemos ter um controle para aguardar o término da aplicação chamada

1
2
3
4
5
6
Dim processo As New Process
processo.StartInfo.FileName = "Excel.exe"
processo.StartInfo.Arguments = "C:\teste.xlsx"
processo.Start()
processo.WaitForExit()
MsgBox("O Processo foi Finalizado!")

É só isso,
Boa Sorte pessoALL.

Related Posts Plugin for WordPress, Blogger...