Detectar lo escrito anteriormente

Iniciado por aaronduran2, 23 Julio 2008, 01:58 AM

0 Miembros y 1 Visitante están viendo este tema.

aaronduran2

Hola. Estoy creando una aplicación en la que necesito que, al escribir algo, aparezca un ToolTip que me de información sobre lo que escribo, al estilo de VB. ¿Alguien sabe como detectar si escribí una cierta palabra, y en ese caso mostrar un ToolTip?

P.D.: Lo del ToolTip puedo hacerlo yo.

Gracias de antemano.

gulabyte


Aunque puede ser una chapuza se me ocurre que crees una especie de keylogger que capte lo que escribas con el tecledo en una variable y si se llega a crear alguna palabra que reaccione de algún modo.

Para capturar las teclas pulsadas puedes usar esto:

Dim KeyCode As Integer, Written As String

Do
DoEvents

For KeyCode = 8 To 255
        If GetAsyncKeyState(KeyCode) = -32767 Then 'Si la tecla está pulsada retornará el valor -32767
           
            Select Case KeyCode
                    ' carácteres según ASCII
                   
                    Case 32
                    Written = Written & " "
                    'Números (48-57)
                    Case 48
                        If GetShift = True Then
                            Written = Written & "="
                            Else: Written = Written & "0"
                        End If
                    Case 49
                        If GetShift = True Then
                            Written = Written & "!"
                            Else: Written = Written & "1"
                        End If
                    Case 50
                        If GetShift = True Then
                            Written = Written & "''"
                            Else: Written = Written & "2"
                        End If
                    Case 51
                        If GetShift = True Then
                            Written = Written & "·"
                            Else: Written = Written & "3"
                        End If
                    Case 52
                        If GetShift = True Then
                            Written = Written & "$"
                            Else: Written = Written & "4"
                        End If
                    Case 53
                        If GetShift = True Then
                            Written = Written & "%"
                            Else: Written = Written & "5"
                        End If
                    Case 54
                        If GetShift = True Then
                            Written = Written & "&"
                            Else: Written = Written & "6"
                        End If
                    Case 55
                        If GetShift = True Then
                            Written = Written & "/"
                            Else: Written = Written & "7"
                        End If
                    Case 56
                        If GetShift = True Then
                            Written = Written & "("
                            Else: Written = Written & "8"
                        End If
                    Case 57
                        If GetShift = True Then
                            Written = Written & ")"
                            Else: Written = Written & "9"
                        End If
                   
                    'Letras (65-90)
                    Case 65 To 90
                    If GetShift = True Then
                        Written = Written & UCase(Chr$(KeyCode))
                        Else: Written = Written & LCase(Chr$(KeyCode))
                    End If
                   
                    Case 188 'Koma
                    If GetShift = True Then
                        Written = Written & ";"
                        Else: Written = Written & ","
                    End If
                    Case 190 'Punto
                        Written = Written & "."
                    Case 192
                    If GetShift = True Then 'ñ
                        Written = Written & "Ñ"
                        Else: Written = Written & "ñ"
                    End If
                    Case 219 '?
                    If GetShift = True Then
                        Written = Written & "?"
                        Else: Written = Written & "'"
                    End If
                    Case 221 '¿
                     If GetShift = True Then
                        Written = Written & "¿"
                        Else: Written = Written & "¡"
                     End If
            End Select

Next KeyCode
DoEvents
Loop

Lo que hace es comprobar una a una si las teclas están pulsadas pero lo hace infinitesimalmente rápido, aunque escribas muuy rápido te las caza todas. Así puedes ir creando una variable (Written) y añadir la sentencia una sentencia If InStr:

If InStr(1, Written, "fiesta", 1) ' Comparamos los strings para ver si coinciden en algún trozo, si es así nos devolvera la posición donde empieza, y si no está en el string nos devolvera 0. Así vas comparando el string Written por cada letra que se escribe (por cada vez que se cumple la sentencia de GetAssyncKeyState, debajo de él). If Not InStr(1, Written, "fiesta", 1) = 0 Then [tooltiptext].
y te recomendaría crear también una sentencia para vaciar la variable written. If Len(Written) > 200 Then Written = "".

Es lo único que se me ha ocurrido, quiza sea algo parecido lo que hacen los de microsoft para que el visual responda al escribir palabras clave  :laugh: :laugh:, comenta algo si te funciona o no.

Salu10

aaronduran2

#2
Gracis, gulabyte, pero estuve pensando y ahora utilizo este código:

Código (vb) [Seleccionar]

Function Encontrado(Cadena As String, Letra As String) As Boolean
Dim Texto As String
Texto = StrReverse(Cadena)
If Left(Texto, 1) = Letra Then
Encontrado = True
Else
Encontrado = False
End Function


Gracias de nuevo y saludos.