|
|
|
|
|
Dicas
|
|
Visual Basic (ActiveX/Controles/DLL)
|
|
|
Título da Dica: Procurando Strings em um TextBox
|
|
|
|
Postada em 14/8/2000 por Webmaster
webmaster@vbweb.com.br
'No Declarations do Form: Private iLast As Integer Private iFirst As Integer Private sFind As String Private Sub Text1_GotFocus() 'Valor Default p/ as variaveis iLast = 1 iFirst = 1 End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, _ Shift As Integer) Dim sMensagem As String, sTitulo As String Dim sDefault As String, bCtrlDown As Boolean Dim bProcura As Boolean, iNum As Integer Dim iPos As Integer, iPos_Fim As Integer
bCtrlDown = (Shift And vbCtrlMask) > 0 bProcura = False If KeyCode = vbKeyF And bCtrlDown Then 'A Tecla Ctrl+F foi pressionada
sMensagem = "Entre com o Texto a ser procurado!" sTitulo = "Procura" sDefault = "" sFind = InputBox(Mensagem, Titulo, Default) If sFind = "" Then Exit Sub
'Marca como a tecla F3 tivesse sido pressionada. KeyCode = 114 'Forca a passagem pela Busca End If
'As rotinas abaixo verificam se a tecla apertada é 'F3. A primeira coisa a ser feita é verificar se 'realmente existe em algum ponto do TextBox a string 'informada no InputBox. 'Existindo a string, entao é verificado se a busca 'será feita "para baixo" (F3) ou "para cima" (Shift+F3) If KeyCode = 114 Then If InStr(Text1.Text, sFind) = 0 Then MsgBox "Texto não encontrado!", vbInformation Exit Sub End If If Shift = 1 Then If iFirst = 0 Or InStr(Mid(Text1.Text, 1, _ iFirst), sFind) = 0 Then iFirst = Len(Text1.Text) End If For iNum = (iFirst - 1) To 1 Step -1 If Mid(Text1.Text, i%, _ Len(Find_String)) = Find_String Then iPos = iNum Exit For End If DoEvents Next For iNum = (iFirst - 1) To 1 Step -1 If Mid(Text1.Text, iNum, _ Len(sFind)) = sFind Then iPos_Fim = Len(sFind) + iNum Exit For End If DoEvents Next iLast = iPos_Fim iFirst = iPos Text1.SelStart = iPos - 1 Text1.SelLength = iPos_Fim - iPos Else iPos = InStr(iLast, Text1.Text, sFind) iFirst = iPos If iPos = 0 Then iLast = 1 iPos = InStr(iLast, Text1.Text, sFind) End If iPos_Fim = Len(sFind) + iPos iLast_Pos = iPos_Fim Text1.SelStart = iPos - 1 Text1.SelLength = iPos_Fim - Pos End If End If End Sub
|
|
|
|
|