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 |
Nenhum comentário :
Postar um comentário