Richtextbox controlos II
Em continuação com este artigo, venho ilustrar um pouco mais os controlos da Richtextbox
.
Detectar URLs e ao clicar nos mesmos direccionar para o browser:
- Nas propriedades da
Richtextbox
, define a propriedadeDetectURLs
comoTrue
. - De seguida basta adicionar o seguinte evento:
Private Sub RichTextBox1_LinkClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.LinkClickedEventArgs) Handles RichTextBox1.LinkClicked Process.Start(e.LinkText) End Sub
Inserir uma imagem:
Private Sub InserirImagem(ByRef RichText As RichTextBox)
Dim Escolher As New OpenFileDialog
With Escolher
.Filter = "Ficheiros Imagem (*.jpg,*.jpeg, *.gif, *.bmp)|*.jpg;*.jpeg;*.gif;*.bmp"
.FileName = ""
.Multiselect = False
If .ShowDialog = Windows.Forms.DialogResult.OK Then
' Devemos atribuir o elemento como uma imagem
Dim img As New Bitmap(Escolher.FileName)
' Pois só assim conseguiremos definir o clipboard.
Clipboard.SetImage(img)
RichText.Paste()
End If
End With
End Sub
Nota: Novamente, para chamar o Sub
basta:
InserirImagem(RichTextbox1)
RichTextBox1.Undo() ' Voltar atrás
RichTextBox1.Redo() ' Voltar a fazer
Relativamente ao zoom que podemos atribuir, há que ter em atenção a diminuição de zoom, pois só existem valores suportados até 0,015625. Sendo assim, impomos uma restrição!
RichTextBox1.ZoomFactor += 1 ' Zoom in
If RichTextBox1.ZoomFactor <> 1 Then ' Restrição
RichTextBox1.ZoomFactor -= 1 ' Zoom out
End If
Inserir numeração (1, 2 - etc) -
Observação: código não desenvolvido por mim.
Const RTF_NUMSTART As String = _
"{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss;}{\f1\froman\fcharset2 Symbol;}{\f2\fnil\fprq2\fcharset2;}{\f3\froman\fprq2;}}" & vbCrLf & _
"{\colortbl\red0\green0\blue0;}" & vbCrLf & _
"\deflang1033\pard\li720\fi-360\plain\f3\fs24 1.\tab "
Const RTF_NUMITEM As String = _
"\par @%@.\tab "
Const RTF_NUMEND As String = "\par }"
' Get the current text.
Dim old_text As String = _
RichTextBox1.SelectedText.Replace(vbCrLf, vbLf)
Dim lines() As String = Split(old_text, vbLf)
' Start the list.
Dim new_text As String = RTF_NUMSTART & lines(0) & vbCrLf
' Add the other lines.
For i As Integer = 1 To lines.Length - 1
new_text &= _
RTF_NUMITEM.Replace("@%@", (i + 1).ToString()) & _
lines(i) & vbCrLf
Next i
' Remove the final vbCrLf.
new_text = new_text.Substring(0, new_text.Length - vbCrLf.Length)
' End the list.
new_text &= RTF_NUMEND
' Save the result.
RichTextBox1.SelectedRtf = new_text
RichTextBox1.Focus()
Importante: Para formatares o tipo de numeração ao teu gosto, visita esta página.
Mudar o tipo de letra + tamanho da mesma:
Private Sub MudarLetra(ByRef RichText As RichTextBox)
If RichText.SelectionFont IsNot Nothing Then
RichText.SelectionFont = New Font(ComboBox1.Text, ComboBox2.Text)
End If
End Sub