Já precisou trabalhar com textos formatados no Visual Basic ?
Se você tentou fazer isto usando o controle TextBox deve ter se sentido frustrado , não é mesmo ?
Afinal o TextBox não apresenta nenhum recurso nativo para ser usado na formatação de textos .
Agora vem uma boa notícia : O Visual Basic possui o controle Rich TextBox que possui recursos para formatação de textos. Dá até para criar um editor de textos com recursos de formatação de fontes , cor , indentação , sobrescrito , subescrito , negrito , sublinhado, etc...
Este artigo vai ser dividido em duas partes.
Na primeira vou mostrar os recursos que o controle Rich TextBox possui e na segunda parte vou fazer a aplicação da teoria em um projeto onde iremos armazenar o texto formatado em um banco de dados.
Introdução
Com o controle Rich TextBox é muito fácil criar textos formatados. A primeira coisa que você vai precisar fazer para usar o controle no seu projeto é fazer uma referência ao controle no seu projeto e incluir o componente no formulário do seu projeto.
No menu Project->Components selecione o componente : Microsoft Rich TextBox Control 6.0
O controle RichTextBox abre e salva arquivos no formato RTF e no formato ASCII (txt). Para abrir e salvar arquivos usamos os métodos LoadFile e SaveFile.
LoadFile - Abre um arquivo RTF ou TXT em um controle RichTextBox.
object.LoadFile pathname, filetype
Parte | Descrição |
object | O objeto referência para o controle RichTextBox |
pathname | Define o caminho e o nome do arquivo que será aberto no controle. |
filetype | Um inteiro ou constante que especifica o tipo de arquivo que vai ser carregado. |
Os valores possíveis para filetype são:
Constante | Valor | Descrição |
rtfRTF | 0 | RTF.(padrão). O arquivo deve ser um arquivo RTF válido. |
rtfText | 1 | Text. O controle irá carregar qualquer arquivo texto válido. |
SaveFile - Salva o conteúdo de um controle RichTextBox em um arquivo.
object.SaveFile(pathname, filetype)
A sintaxe é idêntica ao do comando LoadFile.
Formatação Básica
Vejamos agora as propriedades básicas para formatação do controle RichTextBox.
As propriedades : SelBold , SelItalic , SelStrikeThru e SelUnderline , retornam ou definem o estilo da fonte para o texto atualmente selecionado em um controle RichTextBox.
Object.SelBold
= Valor
Object.SelItalic = Valor
Object.SelUnderline = Valor
Object.SelStrikethru = Valor
Onde Valor pode assumir os valores :
Valor | Descrição |
Null | A seleção contém caracteres que possuem mais de um valor definido para o estilo da fonte. |
True | Todos os caracteres selecionados assumem o valor do estilo definido para a fonte. |
False | (Padrão). Nenhum dos caracteres selecionados assumem o valor do estilo definido para a fonte. |
Para testar estas propriedades vamos criar um pequeno projeto no VB , inserir o componente RichTextBox conforme abaixo, onde temos o código e layout do formulário do projeto:
Private Sub chkNegrito_Click() rich1.SelBold = chknegrito.Value End Sub Private Sub chkItalico_Click() rich1.SelItalic = chkitalico.Value End Sub Private Sub chkSublinhado_Click() rich1.SelUnderline = chksublinhado.Value End Sub Private Sub chktachado_Click() rich1.SelStrikeThru = chktachado.Value End Sub Private Sub Form_Load() rich1.SelLength = 30 End Sub Obs: rich1 é o nome do controle RichTextBox usado. |
- Mudando a fonte , o tamanho e a cor da fonte
SelFontName é a propriedade usada para atribuir ou mudar da fonte em um controle RichTextBox para os caracteres selecionados. A sintaxe é :
object.SelFontName [= string]
Onde temos:
Parte | Descrição |
object | O objeto referência para o controle RichTextBox. |
string | Expressão que indica a fonte instalada no sistema que será usada. |
SelFontSize é a propriedade usada para atribuir ou mudar o tamanho da fonte em um controle RichTextBox para os caracteres selecionados. A sintaxe é :
object.SelFontSize [= points]
Onde temos:
Parte | Descrição |
object | O objeto referência para o controle RichTextBox. |
points | Um valor inteiro que indica o tamanho em points da fonte para o texto atualmente selecionado. |
Obs: Em geral você deve mudar o nome da fonte antes de atribuir o tamanho. O tamanho máximo é 2160 points. lembrando que as fontes disponíveis dependem da sua configuração do sistema, monitor e impressora.
Exemplo: Abaixo duas formas atribuir fonte e tamanho de fonte via código
RichTextBox1.SelFontName = "Times New Roman" RichTextBox1.SelFontSize = 12 Dim fonte as String Dim tamanho as integer fonte = "Verdana" tamanho= 12 RichTextBox1.SelFontName = fonte RichTextBox1.SelFontSize = tamanho |
Acrescentando as opções para seleção de fonte e tamanho no projeto anterior teremos o seguinte layout e código :
|
- Inserindo Texto
Para inserir texto no control Rich TextBox usas as propriedades : SelLength, SelStart e SelText.
onde temos:
Parte | Descrição |
object | O objeto referência para o controle RichTextBox |
number | Uma expressão numérica que especifica o número de caracteres selecinados.. |
index | Uma expressão numérica que especifíca a posição inicial do texto selecionado. |
value | Uma expressão string que contém, o texto selecionado. |
- Alterando a cor do texto
Para alterar a cor de um texto selecionado usamos a propriedade : SelColor
object.SelColor [= color]
onde temos:
Parte | Descrição |
object | O objeto referência para o controle RichTextBox |
color | Um valor que define uma cor. |
Color pode assumir os seguintes valores:
Valor | Descrição |
Null | O texto contém uma mistura de diferentes valores para cores. |
RGB colors | As cores são definidas nos valores das funções RGB ou QBColor. |
System | Cores definidas com as constantes de cores do sistema na livraria de objetos do Visual Basic. |
Incluindo mais esta funcionalidade no exemplo anterior teremos o seguinte layout e código:
Private
Sub cmdcor_Click() CommonDialog1.ShowColor rich1.SelColor = CommonDialog1.Color End Sub Incluimos o componente - Microsoft Common Dialog Control e o botão de comando cmdcor |
- usando indentação e marcadores
Podemos usar parágrafos indentados , subindentados e marcadores no controle RichTextBox. As propriedades usadas para obter estes efeitos são:
Os valores definidos para estas propriedades dependem da definiçãoda propriedade ScaleMode do container do controle RichTextBox. Assim se o controle estiver em um formulário e propriedade ScaleMode do formulário estiver definida como igual a 7 - centimeter os valores estarão em centimetros.
Abaixo um exemplo de utilização das propriedades: (rtfdados é o nome do controle RichTextBox)
|
- Usando Sobreescrito e subescrito
Podemos usar os recursos de Sobreescrito e subescrito no controle RichTextBox através da propriedade SelCharOffset.
A sintaxe é : object.SelCharOffset [= offset]
onde temos:
Parte | Descrição |
object | O objeto referência para o controle RichTextBox |
offset | Um valor inteiro que determina a posição do texto selecionado em relação ao texto base.. |
offset pode assumir os valores:
Valores | Descrição |
Null | O texto contém uma mistura de diferentes valores para offsets. |
0 | (Padrão) Normal. Todos os caracteres aparecem no texto base. |
Número positivo | Sobreescrito. Os caracteres selecionados aparecem acima do texto base pel o número de twips especificado. |
Número negativo | Subescrito.ubscript. Os caracteres selecionados aparecem abaixo do texto base pel o número de twips especificado.. |
- inserindo objetos
Em tempo de execução podemos figuras em um controle RichTextBox . Os tipos de figuras permitidas nesta operação são : objetos que podem ser exibidos como ícones e objetos que podem ser exibidos como dados.
Na figura abaixo temos um exemplo de figura embutida em um controle RichTextBox:
Ao clicar no objeto
embutido a aplicação associada ao arquivo será
executada. Quando os dados do controle forem salvos no formato RTF (usando o método SaveFile) a informação embutida também será salva. |
Podemos também inserir uma figura padrão bmp , como na figura abaixo:
Ao clicar na figura o aplicativo Paint será executado permitindo a edição da figura. |
Para incluir um objeto no controle RichTextBox podemos usar o seguinte código:(aqui usamos um controle CommonDialog para abir a janela onde iremos selecionar o arquivo a incluir no controle)
Private Sub Command1_Click() Dim strOpen As String CommonDialog1.ShowOpen strOpen = CommonDialog1.FileName rtfdados.OLEObjects.Add , , , strOpen End Sub |
A propriedade OLEObjects permite incluir, excluir e limpar objetos em um controle RichTextBox.
- O alinhamento de texto
O alinhamento de texto no controle RichtTextBox é feito pela propriedade - SelAlignment . A sintaxe é :
object.SelAlignment [= value]
onde temos:
Parte | Descrição |
object | O objeto referência para o controle RichTextBox |
value | Um interiro ou constante que determina o alinhamento do parágrafo |
Value pode ter os seguintes valores:
Constante | Valor | Descrição |
Null | Nenhum. A Seleção possui mais de um parágrafco com diferentes alinhamentos. | |
rtfLeft | 0 | (Padrão).O parágrafo é alinhado ao longo da margem esquerda. |
rtfRight | 1 | O parágrafo é alinhado ao longo da margem direita. |
rtfCenter | 2 | O parágrafo é alinhado ao centro das margens direita e esquerda. |
- Imprimindo o conteúdo do controle RichTextBox
Para imprimir o conteúdo de um controle RichTextBox usamos o método - SelPrint. O comando SelPrint envia o conteúdo do texto formatado no controle RichTextBox para a impressora. A sintaxe é a seguinte:
object.SelPrint(hdc)
onde temos:
Parte | Descrição |
object | O objeto referência para o controle RichTextBox |
hdc | O contexto do dispositivo para o periférico que você deseja usar para imprimir o conteúdo do controle. |
o argumento hDC representa a propriedade do objeto Printer que irá imprimir o conteúdo do controle.
- Somente o texto selecionado será impresso. Se nada for selecionado todo o texto será impresso.
- O método SelPrint não imprime o texto apenas envia uma cópia para o dispositivo definido para imprimir o texto.
- Para enviar um texto para a impressora padrão podemos usar o seguinte código :
RichTextBox1.SelPrint(Printer.hDC)
Obs: Se você for usar o objeto Printer como destino do texto vai precisar inicializar o contexto do dispositivo para o ojbeto Printer . Para fazer isto basta imprimir uma string vazia.
Um exemplo de código que imprime o
conteúdo de um controle - rtfdados
- é dado abaixo:
|
- Exibindo os atributos atuais do texto selecionado em um controle RichTextBox
Você pode indicar ao usuário qual os atributos atuais de um texto selecionado. O evento SelChange ocorre sempre que o ponto de inserção se move ou a seleção do texto foi modificada. Abaixo temos um exemplo onde conforme a seleção do texto , o evento SelChange é usado para exibir o status da propriedade SelBold(negrito) no controle ToolBar - tlbRTF.
|
- Localizando um texto no controle RichTextBox
Public
sAchar As String Private Sub Command1_Click() sAchar = inputBox("Informe a palavra a localizar :" , "Busca", sAchar) if sAchar = "" Tehn Exit Sub RichTextBox.Find sAchar endif End sub |
Nota
: Para localizar a próxima ocorrência do mesmo texto
basta fazer o seguinte: RicthTextBox1.SelStart = RicthTextBox1.SelStart + RicthTextBox1.SelLength + 1 RicthTextBox1.Find
sAchar, , len(RicthTextBox1) |
Acabou a teoria. Na continuação deste artigo iremos criar um exemplo prático. Aguarde...
Veja o link em : trabalhando com formatação em campos Memo de banco de dados
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET