Como emular o modo de sobreposição em uma caixa de texto Visual Basic

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 96210
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Embora caixas de texto do Visual Basic não oferecer suporte a um modo sobrescrever (substituir) (onde o texto digitado substitui o texto já existe) você pode escrever código para adicionar esse suporte. O exemplo a seguir demonstra dois métodos para implementar o modo sobrescrever em uma caixa de texto do Visual Basic.
Mais Informações
Microsoft Visual Basic para caixa de texto do Windows controla padrão para inserir o modo, inserir o texto digitado em vez de substituir o que é já existe (modo sobrescrever). Para emular o modo sobrescrever, você pode adicionar código ao evento KeyPress para uma caixa de texto. O fragmento de código a seguir presume que você tenha uma caixa de texto chamada Text1 que você deseja ter no modo sobrescrever:
   ' Form level code:   Const KEY_BACK = &H8   Sub Text1_KeyPress (KeyAscii As Integer)     If KeyAscii <> KEY_BACK Then       Text1.SelLength = 1     End If   End Sub				
por definir a propriedade SelLength da caixa de texto como 1 você forçar a caixa de texto realce (Selecionar) o próximo caractere após a atual posição do cursor. Quando o evento KeyPress for concluída e o caractere correspondente é adicionado ao texto na caixa de texto, ele automaticamente substitui o caractere realçado.

Se você desejar permitir que o usuário dinamicamente alternar entre inserir e o modo sobrescrever, você pode adicionar código adicional para oferecer suporte a isso; você também pode usar a propriedade SelLength para mostrar o usuário qual caractere será substituído quando ele ou ela está no modo sobrescrever. O programa de exemplo a seguir demonstra isso:

Passos para criar programas de exemplo

  1. Executar Visual Basic; ou se já estiver executando o Visual Basic, escolha New Project (ALT + F, N) no menu Arquivo. O Form1 é criado por padrão.
  2. Adicione uma caixa de texto ao Form1 chamado Text1.
  3. Adicione uma caixa de rótulo ao Form1 denominado Label1.
  4. Insira o código a seguir na seção geral de Form1:
         ' Key codes:     Const KEY_BACK = &H8     Const KEY_PRIOR = &H21     Const KEY_NEXT = &H22     Const KEY_END = &H23     Const KEY_HOME = &H24     Const KEY_LEFT = &H25     Const KEY_UP = &H26     Const KEY_RIGHT = &H27     Const KEY_DOWN = &H28     Const KEY_INSERT = &H2D  Const MODE_OVERTYPE = "overtype"  Const MODE_INSERT = "insert"						
  5. Insere o código a seguir no procedimento de carga de Form1:
         Sub Form_Load ()       Text1.Tag = MODE_INSERT       Label1.Caption = MODE_INSERT     End Sub						
  6. Insere o código a seguir no procedimento alterar Texto1:
         Sub Text1_Change ()       ' You have taken some action that changed the text in the       ' text box. Reset the SelLength if you are in overtype mode.       If Text1.Tag = MODE_OVERTYPE And Text1.SelLength = 0 Then         Text1.SelLength = 1       End If     End Sub						
  7. Insere o código a seguir no procedimento Texto1 KeyPress:
         Sub Text1_KeyPress (KeyAscii As Integer)       ' If you press BACKSPACE and are in overtype mode,       ' then set SelLength to 0 so the backspace will correctly       ' delete the character to the left of the current caret       ' position. SelLength will be reset when the Text1_Change       ' event occurs following the backspace.       If KeyAscii = KEY_BACK And Text1.Tag = MODE_OVERTYPE Then         Text1.SelLength = 0       End If     End Sub						
  8. Insere o código a seguir no procedimento Texto1 KeyUp:
         Sub Text1_KeyUp (KeyCode As Integer, Shift As Integer)       Select Case KeyCode         ' Toggle between insert and overtype modes.         Case KEY_INSERT           If Text1.Tag = MODE_OVERTYPE Then               Text1.Tag = MODE_INSERT               Label1.Caption = MODE_INSERT           Else               Text1.SelLength = 1               Text1.Tag = MODE_OVERTYPE               Label1.Caption = MODE_OVERTYPE           End If         ' Handle keys that move the caret position and reset the         ' SelLength if you are in overtype mode:         '         ' The following two lines of code should be all on one line:         Case KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, KEY_HOME, KEY_END,              KEY_PRIOR, KEY_NEXT           If Text1.Tag = MODE_OVERTYPE Then             Text1.SelLength = 1           End If       End Select     End Sub						
  9. Insere o código a seguir no procedimento Texto1 MouseUp. Sub instrução deve ser em uma linha de código:
       Sub Text1_MouseUp (Button As Integer, Shift As Integer, x As Single,   Y As Single)     ' You have clicked at a new location within the text box. Reset the     ' SelLength if you are in overtype mode.     If Text1.Tag = MODE_OVERTYPE And Text1.SelLength = 0 Then       Text1.SelLength = 1     End If   End Sub						
  10. Pressione a tecla F5 para executar o programa. Quando você pressionar INSERT, o Label1 rótulo mostra o modo atual da caixa de texto Texto1. Durante o modo sobrescrever, o caractere atual a ser substituído é realçado.
2,00 3,00 typeover overstrike

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 96210 - Última Revisão: 12/04/2015 09:24:18 - Revisão: 2.0

Microsoft Visual Basic 2.0 Standard Edition, Microsoft Visual Basic 3.0 Professional Edition, Microsoft Visual Basic 2.0 Professional Edition, Microsoft Visual Basic 3.0 Professional Edition

  • kbnosurvey kbarchive kbmt KB96210 KbMtpt
Comentários