domingo, 15 de julho de 2012
Adicionar e formatar um cabeçalho e rodapé em um documento de Word
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
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
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
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
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 <> 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
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.
terça-feira, 26 de junho de 2012
CapsLock, NumLock ou ScrollLock estão ativados?
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
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
segunda-feira, 14 de maio de 2012
Como imprimir um Form
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
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
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
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
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
'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
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
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?

