domingo, 15 de julho de 2012

Adicionar e formatar um cabeçalho e rodapé em um documento de Word

Para editar o cabeçalho e o rodapé em um documento Word, utilize os códigos abaixo.

Abrir o cabeçalho para edição:

docDoc.Content.Application.ActiveWindow.ActivePane.View.SeekView = Word.
WdSeekView.wdSeekCurrentPageHeader

Abrir o rodapé para edição:

docDoc.Content.Application.ActiveWindow.ActivePane.View.SeekView = Word.
WdSeekView.wdSeekCurrentPageFooter

Para fechar a edição tanto para o cabeçalho quanto para o rodapé, utilize o código abaixo:

docDoc.Content.Application.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekMainDocument

Abaixo, alguns códigos para inserir elementos no cabeçalho ou rodapé enquanto a edição do campo está aberta:

With docDoc.Content.Application.Selection
      .TypeText(Text:="Texto") 'Insere texto
      .ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft 'Altera o alinhamento do texto
      .Font.Name = "Arial" 'Altera a fonte do texto
      .Font.Size =10 'Altera o tamanho da fonte do texto
      .Font.Bold = 0 'Coloca em negrito ou não o texto
      .InlineShapes.AddPicture("Caminho da figura/nome.extensão") 'Insere figura
      .Fields.Add(Range:=docDoc.Content.Application.Selection.Range, Type:=CInt(Word.WdFieldType.wdFieldEmpty), Text:="page") 'Insere o número da página
      .Fields.Add(Range:=docDoc.Content.Application.Selection.Range, Type:=CInt(Word.WdFieldType.wdFieldEmpty), Text:="numpages") 'Insere o número total de páginas
End With

Uma boa maneira de aprender novos códigos é utilizar a macro do Word. Grave as alterações que queira fazer e adapte para o código VB.NET.

Simples, não?

quinta-feira, 12 de julho de 2012

Colocar texto na área de transferência

Para colocar um texto na área de transferência utilize o seguinte código:

Clipboard.SetDataObject("String", True)

A String pode ser um TextBox.Text.

Para retirar o texto da área de transferência utilize o seguinte código:

Clipboard.GetDataObject().GetData(DataFormats.Text).ToString()

Para limpar a área de transferência utilize o seguinte código:

Clipboard.Clear()

Simples, não?

quarta-feira, 4 de julho de 2012

Adicionar e formatar uma tabela em um documento do Word

Para adicionar e formatar uma tabela em um documento de Word, abra um documento conforme mostrado neste post e utilize os seguintes comandos:

Dim docTable As Word.Table
Dim r As Integer = 2 'Número de linhas
Dim c As Integer = 2 'Número de colunas
docTable = docDoc.Tables.Add(docDoc.Bookmarks.Item("\endofdoc").Range, r, c)

With docTable
      .Range.Font.Name =
"Arial"'Nome da fonte
      .Range.Font.Size = 10 'Tamanho da fonte
      .Rows.Alignment = Word.WdRowAlignment.wdAlignRowCenter 'Alinhamento horizontal do texto nas linhas
      .Rows(2).Range.Font.Bold = 1 'Fonte em negrito na linha 2
      .Columns.DistributeWidth() 'Distribui a largura das células de acordo como conteúdo
      .Columns(1).Width = 50 'Especifica o tamanho da coluna 1
      .Cell(1, 1).Merge(docTable.Cell(2, 1)) 'Mesclar a célula (1, 1) com a célula (2, 1)
      .Cell(1, 1).Range.Text = "Texto"'Inserir texto na célula (1, 1)
      .Cell(1, 1).Range.Font.Bold = 1 'Texto da célula (1, 1) em negrito
      .Cell(1, 1).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter 'Alinhamento horizontal do texto na célula (1, 1)
      .Cell(1, 1).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter 'Alinhamento vertical do texto na célula (1, 1)
      .Cell(1, 1).Borders(Word.WdBorderType.wdBorderTop).Color = Word.WdColor.wdColorBlue 'Altera a cor da borda superior da célula (1, 1)
      .Cell(1, 1).Borders(Word.WdBorderType.wdBorderTop).LineStyle = Word.WdLineStyle.wdLineStyleSingle 'Altera o estilo da linha da borda superior da célula (1, 1)
      .Cell(1, 1).Borders(Word.WdBorderType.wdBorderTop).LineWidth = Word.WdLineWidth.wdLineWidth025pt 'Altera o tamanho da linha da borda superior da célula (1, 1)
      .Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle 'Estilo das bordas internas da tabela
      .Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle 'Estilo das bordas externas da tabela
End With

Estes são os principais comandos. Explore outros.

Simples, não?

terça-feira, 3 de julho de 2012

Adicionar e formatar um parágrafo em um documento de Word

Para adicionar e formatar um parágrafo em um documento de Word, abra um documento conforme mostrado neste post e utilize os seguintes comandos:

Dim docPara As Word.Paragraph
docPara = docDoc.Paragraphs.Add


With docPara.Range
      .Text =
"Inserir o Texto"
      .Font.Name = "Arial" 'Nome da fonte
      .Font.Size = 12 'Tamanho da fonte
      .Font.Bold = 1 'Em negrito ou não
      .Font.Italic = 0 'Em itálico ou não
      .Font.Color = 0 'Cor da fonte
      .Underline = Word.WdUnderline.wdUnderlineDouble 'Sublinhado ou não e os tipos de sublinhado
      .ParagraphFormat.Alignment = Word. WdParagraphAlignment.wdAlignParagraphDistribute 'Alinhamento do parágrafo
      .ParagraphFormat.SpaceBefore = 2 'Espaço antes do parágrafo
      .ParagraphFormat.SpaceAfter = 2 'Espaço após o parágrafo
      .ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceAtLeast 'Opções de espaçamento entre linhas
      .ParagraphFormat.LineSpacing = 2 'Espaço entre linhas
      .InsertParagraphAfter() 'Inserir o parágrafo
End With

Os comandos acima são os principais. Explore outras opções da .Font e .ParagraphFormat.

Simples, não?

segunda-feira, 2 de julho de 2012

Colocando uma máscara de hora em um Textbox

'Cancelar as teclas de letras, acentos e outros caracteres não numéricos
If Not Char.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

      End Select
End If

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

      End If
End If

'Retirar o : das posições e o número anterior quando Backspace é pressionada
If
TextBox1.TextLength &lt;&gt; 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

sexta-feira, 29 de junho de 2012

Como impedir que seu aplicativo seja executado duas vezes ao mesmo tempo

Para impedir que seu aplicativo tenha duas execuções ao mesmo tempo, basta adicionar o código abaixo no evento Load do formulário de inicialização:

Dim i As Integer = 0
For Each processo As Process In Process.GetProcesses()
      If processo.ProcessName = "Nome do seu aplicativo" Then
            i += 1
      End If
Next processo
If i = 2 Then
     
Application.Exit()
End If

O nome do seu aplicativo você obtém ou altera em Solution Explorer / My Project / Application / Assembly Name.

Simples, não?

terça-feira, 26 de junho de 2012

CapsLock, NumLock ou ScrollLock estão ativados?

Para saber se as teclas CapsLock, NumLock ou ScrollLock estão ativadas utilize dos códigos abaixo:

Dim bln As Boolean

bln =
My.Computer.Keyboard.CapsLock
bln =
My.Computer.Keyboard.NumLock
bln =
My.Computer.Keyboard.ScrollLock

Estes códigos retornaram True se a tecla correspondente estiver ativa e False se não estiver ativada.

Simples, não?

terça-feira, 19 de junho de 2012

Como abrir um documento de Microsoft Excel

Para abrir um documento do Microsoft Excel você precisa adicionar ao seu projeto a referência COM: Microsoft Excel 12.0 Object Library ou inferior.

Adicione antes da declaração da Class Form o seguinte código:

Imports Excel = Microsoft.Office.Interop.Excel

Para abrir um novo documento insira os seguintes comandos em um procedimento ou função:

Dim excelApp As New Excel.Application
Dim excelBook As Excel.Workbook = excelApp.Workbooks.Add
excelApp.Visible =
True

Para abrir um documento Excel qualquer insira os seguintes comandos em um procedimento ou função:

Dim excelApp As New Excel.Application
Dim excelBook As Excel.Workbook = excelApp.Workbooks.Open("caminho/nomedodocumento.extensão")
excelApp.Visible =
True

Simples, não?

Como abrir um documento do Microsoft Word


Para abrir um documento do Microsoft Word você precisa adicionar ao seu projeto a referência COM: Microsoft Word 12.0 Object Library ou inferior.

Adicione antes da declaração da Class Form o seguinte código:

Imports Word = Microsoft.Office.Interop.Word

Para abrir um novo documento insira os seguintes comandos em um procedimento ou função:

Dim docWord As New Word.Application
Dim docDoc As Word.Document = docWord.Documents.Add
docWord.Visible = True

Para abrir um documento word qualquer insira os seguintes comandos em um procedimento ou função:

Dim docWord As New Word.Application
Dim docDoc As Word.Document = docWord.Documents.Open("caminho/nomedodocumento.extensão")
docWord.Visible = True

Simples, não?

segunda-feira, 14 de maio de 2012

Como imprimir um Form

Para imprimir um Form utilize o componente PrintForm do Visual Power Packs.















Os comandos principais são:

1. Para configurar a orientação da página:

PrintForm1.PrinterSettings.DefaultPageSettings.Landscape =
Boolean

Se Boolean = True, o Form será impresso na orientação Paisagem, se Boolean = False, o Form será impresso na orientação Retrato.

2. Para configurar um tamanho personalizado de papel:

PrintForm1.PrinterSettings.DefaultPageSettings.PaperSize =
New System.Drawing.Printing.PaperSize("String", Int1, Int2)

onde String é um nome para o tamanho do papel e Int1 é um número inteiro para o largura em centésimos de polegada e Int2 é um número inteiro para o comprimento em centésimos de polegada.

3. Para configurar as margens da impressão:

PrintForm1.PrinterSettings.DefaultPageSettings.Margins =
New System.Drawing.Printing.Margins(Int1, Int2, Int3, Int4)

onde Int1, Int2, Int3 e Int4 são números inteiros que cuja unidade é em centésimos de polegada e representam, respectivamente, margem esquerda, direita, superior e inferior. Lembrando que 1 polegada = 2,54 centímetros.

PrintForm1.PrintAction = PrintAction

onde há três opções para a PrintAction

PrintAction.PrintToFile: Imprime para um arquivo;
PrintAction.PrintToPreview: Exibe uma prévia da página antes da impressão;
PrintAction.PrintToPrinter: Imprime diretamente na impressora padrão.

Para utilizar o PrintToFile você deve definir antes para qual arquivo a figura do Form irá com o seguinte comando:
PrintForm1.PrintFileName =
"C:\Teste.eps"

A extensão do arquivo deve ser necessariamente o eps (Para saber mais: http://pt.wikipedia.org/wiki/Encapsulated_PostScript).

5. Para imprimir o Form:

PrintForm1.Print(
Form, printOption)

onde
Form é o formulário que ser quer imprimir, se for o formulário onde está o comando utilize o Me, e as opções de printOption são as seguintes:

PowerPacks.Printing.
PrintForm.PrintOption.ClientAreaOnly: Utiliza uma nova implementação para imprimir a área cliente visível no momento.
PowerPacks.Printing.
PrintForm.PrintOption.CompatibleModeClientAreaOnly: Usa a implementação de impressão compatível para imprimir a área cliente visível no momento.
PowerPacks.Printing.
PrintForm.PrintOption.CompatibleModeFullWindow: Usa a implementação de impressão compatível para imprimir o formulário de área visível no momento. Isso inclui a barra de título, barras de rolagem e borda.
PowerPacks.Printing.
PrintForm.PrintOption.FullWindow: Utiliza uma nova implementação para imprimir o formulário visível no momento. Isso inclui a barra de título, barras de rolagem e borda.
PowerPacks.Printing.
PrintForm.PrintOption.Scrollable: Utiliza uma nova implementação para imprimir a área inteira do cliente, embora alguns estão fora de vista.

Simples, não?

Arrastar e Soltar um componente

Para criar o efeito de arrastar e soltar para componentes de um Form, coloque os seguintes códigos nos eventos correspondente ao componente:

Public Class Form1

     
Dim drag As Boolean
      Dim ptX, ptY As Double

      Private Sub Componente_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Componente.MouseDown

            drag = True
            ptX = e.X
            ptY = e.Y

      End Sub

      Private Sub Componente_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Componente.MouseMove

            If drag = True Then
                  Componente.Location = New Point(Componente.Location.X + e.X - ptX, Componente.Location.Y + e.Y - ptY)                  
                  Me.Refresh()
            End If
     
End Sub


      Private Sub Componente_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Componente.MouseUp

            drag = False

      End Sub

End Class


Se quiser especificar qual botão acionará o efeito de arrastar e soltar, coloque o código abaixo em Componente_MouseDown:


If e.Button = Windows.Forms.MouseButtons.Right Then
      drag = True
      ptX = e.X : ptY = e.Y
End If

Simples. não? Confesso que tirei da página do MSDN.

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?