segunda-feira, 26 de setembro de 2011

Retirar o botão de fechar da barra de títulos

Para retirar o botão de fechar da barra de títulos insira o código a seguir abaixo do Public Class Form1

Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Integer, ByVal bRevert As Integer) As Integer
Private
Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
Private Const
SC_CLOSE = &HF060&
Private Const MF_BYCOMMAND = &H0&

Insira também a função abaixo:

Function RemoveXButton(ByVal iHWND As Integer) As Integer
      Dim
iSysMenu As Integer
     
iSysMenu = GetSystemMenu(iHWND, False)
     
Return RemoveMenu(iSysMenu, SC_CLOSE, MF_BYCOMMAND)
End Function

E em Form1_load coloque o seguinte comando:

RemoveXButton(
Me.Handle())

Para retirar o botão de Maximinizar e Minimizar vá em Propriedades do Form1 e coloque
False em MaximizeBox e MinimizeBox.

Simples, não?

quarta-feira, 21 de setembro de 2011

Funções para data com o primeiro dia de um mês, último dia de um mês e verificação se o ano é bissexto

Abaixo estão os códigos das funções que devolvem a data com o primeiro dia do mês, último dia do mês e se um ano é bissexto. Coloque estes códigos em um Módulo ou Class Form.

Public Function IniciodoMes(ByVal intData As Integer) As Integer

      Dim
intMes, intAno As Integer

     
intMes = CInt(Format(DateAdd(DateInterval.Day, intData, constData), "MM"))
      intAno =
CInt(Format(DateAdd(DateInterval.Day, intData, constData), "yyyy"))
      IniciodoMes = DateDiff(
DateInterval.Day, constData, DateSerial(intAno, intMes, 1))

End Function

Public Function
FimdoMes(ByVal intData As Integer) As Integer

      Dim
intDia, intMes, intAno As Integer

     
intMes = CInt(Format(DateAdd(DateInterval.Day, intData, constData), "MM"))
      intAno =
CInt(Format(DateAdd(DateInterval.Day, intData, constData), "yyyy"))

     
Select Case intMes
            Case 4, 6, 9, 11
                  intDia = 30
            Case 2
                  If Bissexto(intAno) = True Then
                       
intDia = 29
                  Else
                       
intDia = 28
                  End If
            Case Else
                 
intDia = 31
      End Select

     
FimdoMes = DateDiff(DateInterval.Day, constData, DateSerial(intAno, intMes, intDia))

End Function

Public Function
Bissexto(ByVal intAno As Integer) As Boolean

     
Bissexto = False
      If
intAno Mod 4 = 0 Then
           
Bissexto = True
      Else
           
Bissexto = False
      End If

End Function


Simples, não?

terça-feira, 20 de setembro de 2011

Como formatar datas, tempos e números do jeito que você precisa

Para alterar os formatos de data, tempo e número utilizamos a função “Format”.

A sintaxe da função é: Format(Byval Expressão as Object, Optional Byval Estilo as String = “”) e retorna uma string.

Expressão é a informação que você quer mudar de formato.
Estilo é o tipo de estilo que será a informação e formatos pré-definidos e formatos que você pode definir combinando-os conforme a necessidade. Todos os estilos devem ser colocados entre aspas.

1 – Formatos Pré-definidos

1.1 – Datas e tempos

General Date ou G Format(#1/1/2011 11:11:11 AM#, “G”) = “1/1/2011 11:11:11”
Format(#1/1/2011 11:11:11 PM#, “G”) = “1/1/2011 23:11:11”
Long Date, Medium Date, ou D Format(#1/1/2011 11:11:11 AM#, “Long Date”) = “sábado, 1 de janeiro de 2011”
Short Date ou d Format(#1/1/2011 11:11:11 AM#, “Short Date”) = “01/01/2011”
Long Time, Medium Time ou T Format(#1/1/2011 11:11:11 AM#, “T”) = “11:11:11”
Format(#1/1/2011 11:11:11 PM#, “T”) = “23:11:11”
Short Time ou t Format(#1/1/2011 11:11:11 AM#, “t”) = “11:11”
Format(#1/1/2011 11:11:11 PM#, “t”) = “23:11”
F Format(#1/1/2011 11:11:11 AM#, “F”) = “sábado, 1 de janeiro de 2011 11:11:11”
Format(#1/1/2011 11:11:11 PM#, “F”) = “sábado, 1 de janeiro de 2011 23:11:11”
f Format(#1/1/2011 11:11:11 AM#, “f”) = “sábado, 1 de janeiro de 2011 11:11”
Format(#1/1/2011 11:11:11 PM#, “f”) = “sábado, 1 de janeiro de 2011 23:11”
g Format(#1/1/2011 11:11:11 AM#, “g”) = “01/01/2011 11:11”
Format(#1/1/2011 11:11:11 PM#, “g”) = “01/01/2011 23:11”
M, m Format(#1/1/2011 11:11:11 AM#, “M”) = “01 de janeiro”
R, r Format(#1/1/2011 11:11:11 AM#, “R”) = “Sat, 01 Jan 2011 11:11:11 GMT”
Format(#1/1/2011 11:11:11 PM#, “r”) = “Sat, 01 Jan 2011 23:11:11 GMT”
s Format(#1/1/2011 11:11:11 AM#, “s”) = “2011-01-01T11:11:11”
Format(#1/1/2011 11:11:11 PM#, “s”) = “2011-01-01T23:11:11”
u Format(#1/1/2011 11:11:11 AM#, “u”) = “2011-01-01 11:11:11Z”
Format(#1/1/2011 11:11:11 PM#, “u”) = “2011-01-01 23:11:11Z”
U Format(#1/1/2011 11:11:11 AM#, “U”) = “sábado, 1 de janeiro de 2011 13:11:11”
Format(#1/1/2011 11:11:11 PM#, “U”) = “domingo, 2 de janeiro de 2011 01:11:11”
Y, y Format(#1/1/2011 11:11:11 AM#, “Y”) = “janeiro de 2011”

1.2 - Numérico

General Number, G ou g Converte o número em um modo compacto e com quantos algarismos significativos.
Format(12345.6789, “G”) = “12345,6789”
Format(12345.6789, “G4”) = “1,235E+04”
Format(12345.6789, “G7”) = “12345,7”
Currency, C ou c Converte o número em unidade monetária e com quantos algarismos após a vírgula arredondando o valor.
Format(12345.6789, “C”) = “R$ 12.345,68”
Format(12345.6789, “C0”) = “R$ 12.346”
Format(12345.6789, “C6”) = “R$ 12.345,678900”
Fixed, F ou f Especifica o número de casas decimais arredondando o valor.
Format(12345.6789, “F”) = “12345,68”
Format(12345.6789, “F0”) = “12346”
Format(12345.6789, “F5”) = “12345,67890”
Standard, N ou n Converte o número para o modo com separadores de milhares e decimais especificando o número de casas decimais arredondando o valor.
Format(12345.6789, “N”) = “12.345,68”
Format(12345.6789, “N0”) = “12.346”
Format(12345.6789, “N5”) = “12.345,67890”
Percent Multiplica o número por 100 e com o símbolo %
Format(12345.6789, “Percent”) = “1234567,89%
P ou p Multiplica o número por 100 e com o símbolo % e com quantos algarismos após a vírgula arredondando o valor.
Format(12345.6789, “P”) = “1.234.567,89%”
Format(12345.6789, “P0”) = “1.234.568%
Format(12345.6789, “P”) = “1.234.567,89000%”
Scientific Converte o número em notação científica com 3 algarismos significativos.
Format(12345.6789, “Scientific”) = “1,23E+04”
E ou e Converte o número em notação científica e com quantos algarismos após a vírgula arredondando o valor.
Format(12345.6789, “E”) = “1,234568E+004”
Format(12345.6789, “E0”) = “1E+004”
Format(12345.6789, “E5”) = “1,23457E+004”
Format(12345.6789, “e”) = “1,234568e+004”
Format(12345.6789, “e0”) = “1e+004”
Format(12345.6789, “e5”) = “1,23457e+004”
D ou d Converte o número para a base Decimal e com quantos algarismos o número será retornado. Válido apenas para números inteiros.
Format(123456789, “D11”) = “00123456789”
X ou x Converte o número para a base Hexadecimal
Format(123456789, “X”) = “75BCD15”
Format(123456789, “x”) = “75bcd15”
Yes/No Format(0, “Yes/No”) = “Não” Format(2, “Yes/No”) = “Sim”
True/False Format(0, “True/False”) = “False”
Format(2, “True/False”) = “True”
On/Off Format(0, “On/Off”) = “Desativar”
Format(2, “On/Off”) = “Ativar”

2 – Formatos definidos pelo usuário
Combine os códigos abaixo para obter os valores no formato desejado

2.1 - Datas e tempos
Observação: quando escrevemos as datas no código VB, o mês é antes do dia, segue o padrão inglês.

: Separador de tempo utilizado para separar horas, minutos e segundos.
/ de data utilizado para separar dia, mês e ano.
d Mostra o dia como número sem o primeiro zero
Format(#1/2/2003 12:34:56 AM#, "d/M") = "2/1".
dd Mostra o dia como número com o primeiro zero
Format(#1/2/2003 12:34:56 AM#, "dd") = "02".
ddd Mostra a abreviatura do dia.
Format(#1/2/2003 12:34:56 AM#, "ddd") = "qui"
dddd Mostra o nome inteiro do dia.
Format(#1/2/2003 12:34:56 AM#, "dddd") = "quinta-feira"
M Mostra o mês como um número sem o primeiro zero.
Format(#1/2/2003 12:34:56 AM#, "d/M") = "1"
MM Mostra o mês como um número com o primeiro zero.
Format(#1/2/2003 12:34:56 AM#, "MM") = "01"
MMM Mostra a abreviatura do mês.
Format(#1/2/2003 12:34:56 AM#, "MMM") = "jan"
MMMM Mostra o nome do mês
Format(#1/2/2003 12:34:56 AM#, "MMMM") = "janeiro"
y Mostra o ano como um número sem o zeros se for entre 0 e 9.
Format(#1/2/2003 12:34:56 AM#, "M/y") = "1/3"
yy Mostra o ano como um número de dois dígitos com o zero quando aplicável.
Format(#1/2/2003 12:34:56 AM#, "yy") = "03"
yyy Mostra o ano como um número de quatro dígitos.
Format(#1/2/2003 12:34:56 AM#, "yyy") = "2003"
yyyy Mostra o ano como um número de quatro dígitos.
Format(#1/2/2003 12:34:56 AM#, "yyyy") = "2003"
gg Mostra a era da data.
Format(#1/2/2003 12:34:56 AM#, "gg") = "d.C."
h Mostra a hora como um número sem o primeiro zero utilizando o formato de 12 horas.
Format(#1/2/2003 12:34:56 AM#, "h:m") = "12:34"
Format(#1/2/2003 12:34:56 PM#, "h:m") = "12:34"
hh Mostra a hora como um número sem o primeiro zero utilizando o formato de 12 horas.
Format(#1/2/2003 12:34:56 AM#, "hh") = "12"
Format(#1/2/2003 12:34:56 PM#, "hh") = "12"
H Mostra a hora como um número sem o primeiro zero utilizando o formato de 24 horas.
Format(#1/2/2003 12:34:56 AM#, "H:m") = "0:34"
Format(#1/2/2003 12:34:56 PM#, "H:m") = "12:34"
HH Mostra a hora como um número com o primeiro zero utilizando o formato de 24 horas.
Format(#1/2/2003 12:34:56 AM#, "HH") = "00"
Format(#1/2/2003 12:34:56 PM#, "HH") = "12"
m Mostra o minuto como um número sem o primeiro zero.
Format(#1/2/2003 12:04:56 AM#, "h:m") = "12:4"
mm Mostra o minuto como um número sem o primeiro zero.
Format(#1/2/2003 12:04:56 AM#, "mm") = "04"
s Mostra o segundo como um número sem o primeiro zero.
Format(#1/2/2003 12:34:06 AM#, "m:s") = "6"
ss Mostra o segundo como um número sem o primeiro zero.
Format(#1/2/2003 12:34:06 AM#, "ss") = "06"
f Mostra a fração de segundos.
Format(Now, "ff") = 89 'Centésimos de segundos
Format(Now, "fffffff") = 6599721 'Décimos de milionésimos de segundo (Máximo)
t Mostra a hora e os minutos em formato 24 horas
Format(#1/2/2003 12:34:56 AM#, "t") = "0:34"
Format(#1/2/2003 12:34:56 PM#, "t") = "12:34"
zz Mostra o fuso horário em formato simples.
Format(Now, "zz") = "-03" 'Fuso de Brasília
zzz Mostra o fuso horário em formato longo.
Format(Now, "zzz") = "-03:00" 'Fuso de Brasília

2.2 - Números

. Separador de decimais.
, Separador de milhar.
0 Se a expressão tiver um dígito na posição onde o 0 aparece na seqüência de formato, exibi-lo, caso contrário, exibe um zero nessa posição.
Format(2, “00”) = “02”
Format(2, “0.00”) = “2,00”
Format(2, “0,000”) = “0.002”
# Se a expressão tiver um dígito na posição onde o # aparece na seqüência de formato, exibi-lo, caso contrário,não exibe nada.
Format(2, “##”) = “2”
Format(2, “#.#”) = “2”
Format(2, “#,###”) = “2”
% Caractere de porcentagem. Multiplica a expressão por 100 e adiciona o caractere %.
Format(2, “0%”) = “200%”
Format(2, “0.0%”) = “200,0%”
Format(2, “0,000%”) = “0.200%”
E+, E-, e+, e- Formato científico. Deve-se usar 0 ou # à direita para exibir os expoentes.
Format(2, “#E+0”) = “2E+0”
Format(0.002, “00E+00”) = “20E-04”
Format(0.002, “00E-00”) = “20E-04”
- + $ ( ) Caracteres literais. São exibidos na sequência que estão na formatação.
Format(2, “R$ 00”) = R$ 02
Format(2, “R$ 0.00”) = “R$ 2,00”
; Divide a formatação entre formato para números positivos e formato para números negativos.
Format(2, “0;0-”) = 2
Format(-2, “0;0-”) = “2-”
Format(-2, “0;(0)” ) = “(2)”
\ Exibe o próximo caractere na sequência do formato ocultando a própria \. Em alguns casos onde se deseja utilizar caracteres que já são específicos para a formatação de datas e tempos pode gerar erro, então utiliza-se a \. Exemplos de caracteres que não podem ser utilizados como literais: caracteres para formatação de data e tempo (a, c, d, h, m, n, p, q, s, t, w, y, /, e :), caracteres para formatação de números (#, 0, %, E, e, vírgula e ponto) e caracteres para formatação de strings (@, &, <, > e !).
Format(2, “d0”) = Erro
Format(2, “\d0”) = “d2”
Format(2, “t00” ) = Erro
Format(2, “\t00”) = "t02”

Agora é só montar a sua formatação.

Simples, não?

segunda-feira, 19 de setembro de 2011

Colocando uma máscara de data no TextBox

Para colocar uma máscara de data no TextBox para que a barra(\) apareça automaticamente coloque os códigos abaixo no evento TextBox1_KeyPress:

 
'Cancelar as teclas de letras, acentos e outros caracteres não numéricos
If No tChar.IsNumber(e.KeyChar) And e.KeyChar <> Chr(8) And e.KeyChar <> Chr(13) Then
     
e.Handled = True
End If

 

'Máscara de data com a barra
If IsNumeric(e.KeyChar) = True Then
      Select Case
TextBox1.TextLength
            Case 0
                  TextBox1.Text = ""
            Case 2
                  TextBox1.Text = TextBox1.Text + "/"
                  TextBox1.SelectionStart = 4
            Case 5
                  TextBox1.Text = TextBox1.Text + "/"
                  TextBox1.SelectionStart = 7
      End Select
End If

'Limita o textbox a 10 caracteres
If TextBox1.TextLength = 10 Then
      If Not
e.KeyChar = Chr(8) Then
           
e.Handled = True
           
TextBox1.SelectionStart = TextBox1.TextLength
      End If
End If

'Retirar a / das posições e o número anterior
If TextBox1.TextLength <> 0 Then
      If
e.KeyChar = Chr(8) And TextBox1.TextLength = TextBox1.Text.LastIndexOf("/") + 1 Then
           
TextBox1.Text = TextBox1.Text.Substring(0, TextBox1.TextLength - 1)
            TextBox1.SelectionStart = TextBox1.TextLength
      End If
End If


'Testa a data quando a tecla enter é precionada
If e.KeyChar = Chr(13) Then
      If IsDate(TextBox1.Text) = False Or TextBox1.TextLength = 9 Then
           
MsgBox("Data Inválida!", 16, "Erro")
            Exit Sub
      Else
           
TextBox1.Text = Format(CDate(TextBox1.Text), "dd/MM/yy")
      End If
End If


Você pode colocar a última parte, quando se verifica se a data é válida no evento TextBox1_Leave, basta retirar o “
If e.KeyChar = Chr(13) Then”.

Simples, não?

domingo, 18 de setembro de 2011

Como aplicar uma ação a todos os componentes de um tipo em um Form

Para aplicar uma ação a todos os componentes de um tipo em um Form utilize os códigos abaixo.

For Each ctl As Control In Me.Controls
     
If TypeOf ctl Is Tipo de Componente Then
            Ação()
     
End If
Next
ctl

Exemplos:

Para limpar o texto em todos os TextBox:

For Each ctl As Control In Me.Controls
     
If TypeOf ctl Is TextBox Then
            ctl.Text = ""
      End If
Next
ctl

Para ocultar todos os Buttons:

For Each ctl As Control In Me.Controls
     
If TypeOf ctl Is Button Then
            ctl.Visible = False
      End If
Next
ctl

Simples, não?

sábado, 17 de setembro de 2011

Colocar em ordem alfabética os itens de uma ListView

Para colocar em ordem alfabética itens de uma ListView quando o usuário clica em uma coluna, utilize os códigos abaixo.

Crie uma classe e coloque os seguintes códigos:

Imports System.Collections
Imports System.Windows.Forms 'Estas duas instruções devem ser colocadas antes de Public Class

Public Class NomedaClasse

      Implements IComparer

      Public Enum SortOrder

            Ascending
            Descending

      End Enum

      Private
mSortColumn As Integer

      Private
mSortOrder As SortOrder

      Public Sub New(ByVal sortColumn As Integer, ByVal sortOrder As SortOrder)

            mSortColumn = sortColumn
            mSortOrder = sortOrder

      End Sub

      Public Function
Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

            Dim Result As Integer
            Dim
ItemX As ListViewItem
            Dim ItemY As ListViewItem

            ItemX = CType(x, ListViewItem)
            ItemY = CType(y, ListViewItem)

            If mSortColumn = 0 Then
                 
Result = DateTime.Compare(CType(ItemX.Text, DateTime), CType(ItemY.Text, DateTime))
            Else
                 
Result = DateTime.Compare(CType(ItemX.SubItems(mSortColumn).Text, DateTime), CType(ItemY.SubItems(mSortColumn).Text, DateTime))
            End If

            If
mSortOrder = SortOrder.Descending Then
           
      Result = -Result
            End If

            Return
Result

      End Function

End Class

Public Class
ListViewStringSort

      Implements IComparer

      Private mSortColumn As Integer
      Private
mSortOrder As SortOrder

      Public Sub New(ByVal sortColumn As Integer, ByVal sortOrder As SortOrder)

            mSortColumn = sortColumn
            mSortOrder = sortOrder

      End Sub

      Public Function
Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

            Dim Result As Integer
            Dim
ItemX As ListViewItem
            Dim ItemY As ListViewItem

            ItemX = CType(x, ListViewItem)
            ItemY = CType(y, ListViewItem)

            If mSortColumn = 0 Then
                 
Result = ItemX.Text.CompareTo(ItemY.Text)
            Else
                 
Result = ItemX.SubItems(mSortColumn).Text.CompareTo(ItemY.SubItems(mSortColumn).Text)
            End If

            If
mSortOrder = SortOrder.Descending Then
                 
Result = -Result
            End If

            Return
Result

      End Function

End Class

Public Class
ListViewNumericSort

      Implements IComparer

      Private mSortColumn As Integer

      Private
mSortOrder As SortOrder

      Public Sub New(ByVal sortColumn As Integer, ByVal sortOrder As SortOrder)

            mSortColumn = sortColumn
            mSortOrder = sortOrder

      End Sub

      Public Function
Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

            Dim Result As Integer
            Dim
ItemX As ListViewItem
            Dim ItemY As ListViewItem

            ItemX = CType(x, ListViewItem)
            ItemY = CType(y, ListViewItem)

            If mSortColumn = 0 Then
                 
Result = Decimal.Compare(CType(ItemX.Text, Decimal), CType(ItemY.Text, Decimal))
            Else
                 
Result = Decimal.Compare(CType(ItemX.SubItems(mSortColumn).Text, Decimal), CType(ItemY.SubItems(mSortColumn).Text, Decimal))
            End If

            If
mSortOrder = SortOrder.Descending Then
                 
Result = -Result
            End If

            Return
Result

      End Function

End Class

Public Class
ListViewDateSort

      Implements IComparer

      Private mSortColumn As Integer
      Private
mSortOrder As SortOrder

      Public Sub New(ByVal sortColumn As Integer, ByVal sortOrder As SortOrder)

            mSortColumn = sortColumn
            mSortOrder = sortOrder

      End Sub

      Public Function
Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

            Dim Result As Integer
            Dim
ItemX As ListViewItem
            Dim ItemY As ListViewItem

            ItemX = CType(x, ListViewItem)
            ItemY = CType(y, ListViewItem)

            If mSortColumn = 0 Then
                 
Result = DateTime.Compare(CType(ItemX.Text, DateTime), CType(ItemY.Text, DateTime))
            Else
                 
Result = DateTime.Compare(CType(ItemX.SubItems(mSortColumn).Text, DateTime), CType(ItemY.SubItems(mSortColumn).Text, DateTime))
            End If

            If
mSortOrder = SortOrder.Descending Then
                 
Result = -Result
            End If

            Return
Result

      End Function

End Class

Em um módulo coloque os códigos abaixo:

Friend Sub SortMyListView(ByVal ListViewToSort As ListView, ByVal ColumnNumber As Integer, Optional ByVal Resort As Boolean = False, Optional ByVal ForceSort As Boolean = False)

     
Dim SortOrder As SortOrder
      Static LastSortColumn As Integer = -1
     
Static LastSortOrder As SortOrder = SortOrder.Ascending

      If Resort = True Then
            SortOrder = LastSortOrder
     
Else            If LastSortColumn = ColumnNumber Then                  If LastSortOrder = SortOrder.Ascending Then
                        SortOrder = SortOrder.Descending
                 
Else
                        SortOrder = SortOrder.Ascending
                 
End If
            Else
                  SortOrder = SortOrder.Ascending
           
End If      End If

      If String.IsNullOrEmpty(CStr(ListViewToSort.Columns(ColumnNumber).Tag)) Then            If ForceSort = True Then
                  ListViewToSort.Columns(ColumnNumber).Tag = "String"
            Else                  Exit Sub            End If      End If

      Select Case ListViewToSort.Columns(ColumnNumber).Tag.ToString
           
Case "Numeric"
                  ListViewToSort.ListViewItemSorter = New ListViewNumericSort(ColumnNumber, SortOrder)
           
Case "Date"
                  ListViewToSort.ListViewItemSorter = New ListViewDateSort(ColumnNumber, SortOrder)
           
Case "String"
                  ListViewToSort.ListViewItemSorter = New ListViewStringSort(ColumnNumber, SortOrder)
     
End Select

      LastSortColumn = ColumnNumber
      LastSortOrder = SortOrder
      ListViewToSort.ListViewItemSorter =
Nothing

End Sub

No evento ColumnClick do ListView coloque o código abaixo:

Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView.ColumnClick

      SortMyListView(
Me.ListView1, e.Column, , True)

End Sub

Achei estes códigos há algum tempo, não me lembro de onde para colocar os créditos aqui.

Simples, não?

sexta-feira, 16 de setembro de 2011

Acessando pastas padrões do Windows

O VB possui comandos simples para você acessar arquivos em pastas padrões para os usuários do Windows.

1 - Pasta de arquivos temporários

My.Computer.FileSystem.SpecialDirectories.Temp

2 - Pasta meus documentos

My.Computer.FileSystem.SpecialDirectories.MyDocuments

3 - Pasta minhas imagens

My.Computer.FileSystem.SpecialDirectories.MyPictures

4 - Pastas minhas músicas

My.Computer.FileSystem.SpecialDirectories.MyMusic

5 - Pasta desktop

My.Computer.FileSystem.SpecialDirectories.Desktop

6 - Pasta do menu iniciar

My.Computer.FileSystem.SpecialDirectories.Programs

7 - Pasta de instalação dos programas

My.Computer.FileSystem.SpecialDirectories.ProgramFiles

Você pode utilizar estes códigos, por exemplo, no OpenFileDialog.InitialDirectory

Simples, não?

quinta-feira, 15 de setembro de 2011

Como obter informações de arquivos

Para obter informações de arquivos como tamanho, data de criação, caminho e outras, temos os códigos abaixo:

Dim DadosArquivo As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo("Caminho completo e Nome do Arquivo")

Label1.Text = DadosArquivo.DirectoryName
'o diretório do arquivo

Label2.Text = DadosArquivo.Extension 'a extensão do arquivo

Label3.Text = DadosArquivo.FullName 'o caminho e o nome do arquivo

Label4.Text = DadosArquivo.LastAccessTime 'a data e hora do último acesso ao arquivo

Label5.Text = DadosArquivo.LastWriteTime 'a data e hora do última modificação do arquivo

Label6.Text = DadosArquivo.Length 'o tamanho, em bytes, do arquivo

Label7.Text = DadosArquivo.Name
'o nome do arquivo

Label8.Text = DadosArquivo.Exists
'se o arquivo existe

Simples, não?

quarta-feira, 14 de setembro de 2011

Como utilizar o OpenFileDialog para abrir determinados tipos de arquivos

Para utilizar o OpenFileDialog para abrir determinados tipos de arquivos utilize os comandos abaixo:

OpenFileDialog1.InitialDirectory() =
"Diretório Inicial"

Este comando determina qual diretório será o diretório inicial quando o OpenFileDialog abrir. Você pode colocar os comandos para os diretórios padrões do Windows, exemplos:

OpenFileDialog1.InitialDirectory() =
"C:\Windows"
OpenFileDialog1.InitialDirectory() =
My.Computer.FileSystem.SpecialDirectories.MyDocuments
OpenFileDialog1.FileName =
"Tipo de Arquivo"

Este comando aplica um texto no campo Nome do Arquivo no OpenFileDialog quando este for aberto.

OpenFileDialog1.Filter =
"Descrição da Extensão 1(*.Extensão1)|*.Extenção1|Descrição da Extensão2 (*.Extensão2)|*.Extensão2"

Este comando aplica um filtro no OpenFileDialog para abrir somente os arquivos determinados por você. Exemplos:

OpenFileDialog1.InitialDirectory() =
My.Computer.FileSystem.SpecialDirectories.MyDocuments
OpenFileDialog1.FileName =
"Documentos do Word"
OpenFileDialog1.Filter =
"Documentos do Word (*.docx)|*.docx|Documentos do Word 93-2003 (*.doc)|*.doc"


Neste exemplo cada tipo de arquivo é associado a apenas uma extensão.

OpenFileDialog1.InitialDirectory() =
My.Computer.FileSystem.SpecialDirectories.MyMusic
OpenFileDialog1.Filter =
"Som wave (*.wav,*.wave)|*.wav;*.wave"
OpenFileDialog1.FileName =
"Som wave"


Neste exemplo um tipo de arquivo está associado com duas extensões.

OpenFileDialog1.ShowDialog()

Este comando mostra o OpenFileDialog

Simples, não?

terça-feira, 13 de setembro de 2011

Como agregar arquivos no seu aplicativo para utilizá-los a qualquer hora

O VB possui uma parte que você pode agregar qualquer arquivo não executável para utilizá-lo a qualquer hora e de maneira muito prática. Esta parte chama-se Resources. Ela está disponível como uma aba nas Propriedades do seu projeto. Você pode acessá-la dando dois cliques em My Project em Solution Explorer ou em propriedades do seu projeto no menu Project.


Você pode adicionar ao seu projeto frases (Strings), arquivos de áudio, figuras, ícones e outros arquivos.

Para utilizar estes arquivos basta o seguinte comando:

My.Resources.Nome do Arquivo

Exemplos:

My.Computer.Sound.Play(My.Resources.Audio, AudioPlayMode.Background)

Label1.Image =
My.Resources.Imagem

Simples, não?

segunda-feira, 12 de setembro de 2011

Salvando informações no registro

Para salvar informações no registro do Windows existem dois métodos, um mais fácil e outro menos fácil.

1 - Mais fácil

Os comandos a baixos alteram as informações em uma seção padrão do registro para aplicativos VB: HKEY_CURRENT_USER\Software\VB and VBA Program Settings. Os comandos são simples e rápidos.


1.1 - Salvar informações

SaveSetting(
"Nome do Aplicativo", "Seção", "Chave", "Valor"), onde Nome do Aplicativo, Seção, Chave e Valor são Strings.

1.2 - Obter informações

GetSetting(
"Nome do Aplicativo", "Seção", "Chave", "Valor Padrão"), onde Valor Padrão é o valor que retornará caso o registro não exista.

1.3 - Apagar informações

DeleteSetting(
"Nome do Aplicativo", "Seção", "Chave"), onde Seção e Chave são opcionais.

2 - Menos fácil

Este método você pode salvar informações em qualquer parte do registro. Para efeito de organização do registro você deve salvar as informações na seção Software em CurrentUser, o que torna o aplicativo mais profissional.
Você dece colocar antes do
Public Class Form:

Imports Microsoft.Win32

Para tal, o VB possui os seguintes comandos:

2.1 - Criar Pastas

Você pode criar novas seções sem criar novas chaves, basta utilizar os seguintes comandos:

Dim NovaChave As RegistryKey
NovaChave =
My.Computer.Registry.CurrentUser.CreateSubKey("Software\Nome da Empresa\Nome do Aplicativo\Seção")

2.2 - Salvar informações

My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Nome da Empresa\Nome do Aplicativo\Seção", "Chave", "Valor"

Se a seção não existir, ela será criada.

2.3 - Obter informações

Dim ValordaChave As Object
ValordaChave =
My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Nome da Empresa\Nome do Aplicativo\Seção", "Chave", "Valor Padrão"), onde Valor Padrão é o valor que irá retornar caso a chave não exista.

2.4 - Deletar informações

Existem três métodos:

2.4.1 - Apagar uma Chave

Using Chave As RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Software\Nome da Empresa\Nome do Aplicativo\Seção", True)
      Chave.DeleteValue(
"Chave")
End Using

2.4.2 - Apagar uma Seção

Using Secao As RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Software\Nome da Empresa\Nome do Aplicativo", True)
      Secao.DeleteSubKey(
"Seção")
End Using

2.4.3 - Apagar uma árvore de seções

Using Secao As RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Software", True)
      Secao.DeleteSubKeyTree(
"Nome da Empresa")
End Using

Utilize com atenção estes comandos, pois você pode danificar a execução de programas e até do Windows.

Lembrete: você pode acessar o registro e fazer alterações manualmente nele colando REGEDIT em Executar (atalho do teclado: Ctrl+R).

Este é um pouco menos simples, não?

domingo, 11 de setembro de 2011

Mensagem na área de notificação

Para exibir uma mensagem na área de notificação tem se que ter o elemento NotifyIcon associado ao Form.


E os comandos são bem simples:


NotifyIcon1.BalloonTipIcon = ToolTipIcon

Qual ícone será exibido na mensagem. São eles:

      1 - ToolTipIcon.Error;
      2 - ToolTipIcon.Info
      3 - ToolTipIcon.Warning.

NotifyIcon1.BalloonTipText = "Texto" 'O texto que será exibido na mensagem.

NotifyIcon1.BalloonTipTitle =
"Título" 'O título da mensagem.

NotifyIcon1.ShowBalloonTip(Tempo)
'Comando para mostrar a mensagem, onde Tempo é o tempo em milissegundos que a mensagem será exibida.


Simples, não?

sábado, 10 de setembro de 2011

Como executar áudio na sua aplicação

O VB disponibiliza os seguintes métodos para execução de áudio:

1 - Executar áudio do sistema:

     
My.Computer.Audio.PlaySystemSound(SystemSound)

     Sendo SystemSound áudios de curta duração pré-definidos pelo sistema e com as seguintes opções:

     1.1 - Media.
SystemSounds.Asterisk;
     1.2 - Media.
SystemSounds.Beep;
     1.3 - Media.
SystemSounds.Exclamation;
     1.4 - Media.
SystemSounds.Hand;
     1.5 - Media.
SystemSounds.Question.

2 - Executar áudio *.wav/*.wave
   
     
My.Computer.Audio.Play(caminho, modo)

      Caminho: é o caminho completo do arquivo wav.
      Modo:

      2.1 -
AudioPlayMode.Background: Executa uma vez o áudio e continua executando o código;
      2.2 -
AudioPlayMode.BackgroundLoop: Executa o áudio em loop até o comando de parar e o código  continua sendo executado;
      2.3 -
AudioPlayMode.WaitToComplete: Executa o áudio e após o término do áudio continua executando o código.

O comando My.Computer.Audio.Stop() interrompe a execução do áudio.
Exemplos:
      My.Computer.Audio.Play(C:\Windows\Media\audio.wav, AudioPlayMode.Background)       My.Computer.Audio.Play(OpenFileDialog1.FileName, AudioPlayMode.WaitToComplete)
Simples, não?

quinta-feira, 8 de setembro de 2011

Converter cores de VB para Word e vice-versa

Quem trabalha com aplicações para edição de documentos Word pode ter se percebido que o sistema de codificação numérica de cores do VB e do Word são diferentes. Por exemplo, o código númerico para preto em VB é -16777216 e em Word é 0.

A função a seguir converte a cor de um sistema para o outro:

Public Function ConverterCor(ByVal int As Integer) As Integer
      Dim
R, G, B As Integer
      If
int >= 0 Then 'Word
            If int <= 255 Then
                 
B = 0
                  G = 0
                  R = int
            ElseIf int <= 65535 And int > 255 Then
                 
B = 0
                  G = int \ 256
                  R = int - 256 * G
            ElseIf int > 65535 Then
                 
B = int \ 65536
                  G = (int - 65536 * B) \ 256
                  R = int - 65536 * B - 256 * G
            End If
           
ConverterCor = 65536 * R + 256 * G + B - 16777216
      Else 'VB
            If int <= -16776961 Then
                 
R = 0
                  G = 0
                  B = int + 16777216
            ElseIf int > -16776961 And int <= -16711681 Then
                 
R = 0
                  G = (int + 16777216) \ 256
                  B = int + 16777216 - 256 * G
            ElseIf int > -16711681 Then
                 
R = (int + 16777216) \ 65536
                  G = (int + 16777216 - 65536 * R) \ 256
                  B = int + 16777216 - 65536 * R - 256 * G
            End If
           
ConverterCor = R + 256 * G + 65536 * B
      End If
End Function

Esta função reconhece qual o sistema que foi inserido e retorna o outro.

A seguir exemplos para de aplicação desta função:

WordDoc.Paragraph.Font.Color = ConverterCor(TextBox1.ForeColor.toArgb)
TexBox1.ForeColor =
Color.FromArgb(ConverterCor(WordDoc.Paragraph.Font.Color))

Este não foi simples não. Deu muito trabalho para descobrir as codificações.