15 Dicas de Visual Basic
Neste post mostraremos 15 dicas de desenvolvimento na linguagem de programação Visual Basic.
Descobrindo se o S.O. é Windows 95 ou Windows NT
'DEMONSTRAÇÃO DE IDENTIFICAÇÃO DO SISTEMA OPERACIONAL CORRENTE. ' 'FUNÇÕES Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long 'CONSTANTES Public Const VER_PLATFORM_WIN32_NT As Long = 2 Public Const VER_PLATFORM_WIN32_WINDOWS As Long = 1 Public Const VER_PLATFORM_WIN32s As Long = 0 'TIPOS Public Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type ' Public Function VerificarSistemaOperacional() As String Dim osvSistema As OSVERSIONINFO Dim sRetorno As String On Error GoTo ERRO osvSistema.dwOSVersionInfoSize = Len(osvSistema) If GetVersionEx(osvSistema) = 0 Then sRetorno = "SISTEMA OPERACIONAL NÃO IDENTIFICADO" Else If osvSistema.dwPlatformId = VER_PLATFORM_WIN32_NT Then sRetorno = "WINDOWS NT" ElseIf osvSistema.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then sRetorno = "WINDOWS 95" ElseIf osvSistema.dwPlatformId = VER_PLATFORM_WIN32s Then sRetorno = "WINDOWS 32s" End If End If VerificarSistemaOperacional = sRetorno Exit Function ERRO: VerificarSistemaOperacional = "ERRO AO IDENTIFICAR O SISTEMA OPERACIONAL" End Function
Desabilitando o botão Fechar nos forms
Adicione o código a seguir em um módulo .BAS:
Public Const MF_BYPOSITION = &H400& Public Declare Function RemoveMenu Lib “user32” _ (ByVal hMenu As Long, _ ByVal nPosition As Long, _ ByVal wFlags As Long) As Long Public Declare Function GetSystemMenu Lib “user32” _ (ByVal hWND As Long, _ ByVal bRevert As Long) As Long Public Sub RemoveCloseButton(hWND As Long) Dim hSysMenu As Long hSysMenu = GetSystemMenu(hWND, 0) RemoveMenu hSysMenu, 6, MF_BYPOSITION RemoveMenu hSysMenu, 5, MF_BYPOSITION End Sub
Adicione em sua aplicação o seguinte código no evento Form_Load:
RemoveCloseButton Me.hWND
Adicionando segurança a uma base de dados Jet
Para ter uma maior segurança a uma base de dados Jet (.MDB), versão 2.5 (Access 2/VB3/VB4-16 bit) ou versão 3.0 (Access 7/VB4-32 bit), siga os seguintes passos:
- Use o Access Workgroup Administrator para criar um novo grupo de trabalho, com uma não nula Workgroup ID.
- Inicie o Access e altere a senha para o usuário default Admin.
- Crie um novo usuário, adicione-o no grupo de Administração, com os privilégios de administrador. Remova a conta Admin do grupo de administradores.
- Reinicie o Access, conectando-se como novo usuário, e altere a senha.
- Execute o Access Security Wizard
(No Access, copie do site da Ms em http://www.microsoft.com/accdev). - Crie o(s) usuários e o(s) grupo(s) de usuário, definindo seus privilégios.
- Não defina nenhuma permissão para o Admin.
Criando toolbars dockaveis
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long Declare Function ReleaseCapture Lib "user32" () As Long Sub Toolbar1_MouseDown(Button as integer, Shift as integer, X as single, Y as single) ReleaseCapture Dim a& a& = SendMessage(ToolBar1.hwnd, 161, 2, 0&) End Sub
Função Mid do Visual Basic
Muitos já conhecem a Função Mid do Visual Basic, ela retorna uma substring com um número específico de caracteres, ou seja, uma parte da string usada como parâmetro.
Mas, você sabia que pode utilizar o Mid para substituir caracteres no meio de uma string?
O Mid é uma excelente função do Visual Basic, pois, altera um de seus próprios argumentos e isto economiza uma série de instruções de concatenação, veja o exemplo:
Dim mystring as String mystring = "SOME STRING" If Mid(mystring, 2, 1) = "O" Then 'Testa se na posição a String é igual a O Mid(mystring, 2, 1) = "A" 'Substitui o caracter por A End If
Atualizando Bound Controls por uma List Box
Quando você desejar que os Bound Controls (controles associados a dados) sejam atualizados em eventos de listas ou combos, adicione este código no evento click (ou double-click) da lista ou combo:
Data1.RecordSet.Bookmark = DBCombo1.SelectedItem
Como resultado, seu registro corrente passará a ser o registro com a chave indicada na lista ou combo.
Todos os Bound Controls são atualizados automaticamente.
É necessário definir apenas as propriedades RowSource e ListField. Assim, economiza-se tempo que seria gasto em conversões de dados e atualização de campos.
Conversão de Nulos
Em uma consulta a bancos de dados, o retorno de uma variável, quando nula, poderá não ser 0 (numérico) ou “” (string).
Geralmente resolve-se este problema assim:
If Not IsNull(meurecordset.meucampo) Then minhavar = meurecordset.meucampo Else minhavar = "" 'minhavar = 0, no caso de numéricos End If
Uma outra forma mais simples é:
minhavar = “” & meurecordset.meucampo
Ou
minhavar = val(0 & meurecordset.meucampo) ‘ para numéricos
Movendo-se entre os campos com Enter
Usar o evento KeyPress dos seus controles.
IF Keyascii =13 Then SendKeys "{TAB}" END IF
Enviando um E-Mail
Dim objSession As Object Dim objMessage As Object Set objSession = CreateObject("MAPI.SESSION") objSession.Logon "Your Profile Name", , False,False Set objMessage = objSession.Inbox.Messages.Add objMessage.Subject = "Assunto da mensagem" objMessage.Text = "Texto da Mensagem" objMessage.Attachments.Add "Anexo", , , "C:\webmundi.DOC" 'caminho do arquivo em anexo objMessage.Recipients.Add "endereço do e-mail" objMessage.Recipients.Resolve objMessage.Send
Este código funciona adequadamente, quando o Outlook do usuário que envia o e-mail está aberto, caso não quera assim, retire o código (,,false,false) das instruções acima
na quarta linha.
Tab Automático sem codificação
Use o MaskEdBox setando o valor da propriedade autotab com true.
Todas as vezes que for preenchido com o valor igual ao de maxlength automaticamente passará para o próximo controle sem codificação.
Criando Credits Scroll
Para criar um formulário com que os créditos rolem no Form proceda da seguinte forma:
Crie um Form.
Adicione um timer ao seu form com o valor do intervalo =1
Tenha 1 label ou mais em seu form (esse código pode rolar figuras, textboxes …)
Private Sub Timer1_Timer() Label1.Top = Label1.Top - 32 'The bigger the number, the faster the scroll ' add any other labels you want to scroll.... ' also try this: ' Label1.Left = Label1.Left - 32 ' to scroll sideways End Sub
Formulário de Senha
Crie um Form e adicione 2 textbox e um commandButon no text2 altere a opção de PassowordChar para *
Sub Command1_Click() 'Indica a condição para a senha ser aceita if text1.text="WebMundi" and text2.text="Site" then MsgBox "Senha Aceita" form2.show else 'se a senha não for aceita msgBox"Senha Incorreta" end if end sub
Cores do Sistema
Para não ocorrer de você colocar um controle em cor Cinza, por exemplo, e o seu usuário trocar as cores do sistema para o padrão “Lilás” e seu controle continuar cinza, use o SystemColorConstants
Ex:
Controle.BackColor = SystemColorConstants.vb3DDKShadow
Controle.BackColor = SystemColorConstants.vb3DFace
Controle.BackColor = SystemColorConstants.vbActiveTitleBar
Bookmark
A utilização de Bookmarks permitem ao desenvolvedor “memorizar” um determinado registro da tabela para que possa retornar mais tarde ao mesmo registro memorizado, Este recurso é muito simples e fácil de utilizar..
Para marcar um determinado local em uma tabela , utilize a seguinte instrução:
No (General) (Declarations) do Form, criar uma variável tipo string da seguinte forma:
Dim marca As String
marca = tblwm.Bookmark
Quando quiser retornar o ponteiro no referido registro utilize:
tblwm.Bookmark = marca
Para exibi-los no form, basta forçar a reexibição dos dados novamente
Apresentar “*” em uma textbox que está sendo usada para senha
Apresentar “*” em uma textbox que está sendo usada para senha
Coloque * na propriedade PasswordChar da TextBox
Obrigado
Espero que estas dicas sejam úteis para você ou tenha lhe ajudado de alguma forma.
Se você gostou, compartilhe estas dicas com um amigo ou participe de nossas redes sociais.
Conhece alguma outra dica ?
Envie para nos em nossa página do Facebook.
Caso queira nos incentivar a criar mais conteúdos como este, prestigie nossos anunciantes.
Um Grande Abraço e até a próxima dica!