 Visual Basic 
6 - Usando controle
Rich TextBox
 Visual Basic 
6 - Usando controle
Rich TextBoxJá 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
         | 
- 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
