CURSOR DO TEXTBOX SEGUINDO O CURSOR DO MOUSE
Boa Tarde
Imaginemos que eu tenho um textbox com umas 5 linhas e conforme eu vou passando o mouse o cursor do textbox segue o mouse
na verdade eu preciso saber sobre que palavra o mouse está.
se o cursor do textbox seguir o cursor do mouse, eu pesquiso o primeiro espaço antes e depois da posição do cursor e ficarei sabendo sobre que palavra o mouse está.
ex. pratico. no text box eu tenho a seguinte frase
se eu parar o mouse sobre melhor me aparece em um label a palavra melhor !
Imaginemos que eu tenho um textbox com umas 5 linhas e conforme eu vou passando o mouse o cursor do textbox segue o mouse
na verdade eu preciso saber sobre que palavra o mouse está.
se o cursor do textbox seguir o cursor do mouse, eu pesquiso o primeiro espaço antes e depois da posição do cursor e ficarei sabendo sobre que palavra o mouse está.
ex. pratico. no text box eu tenho a seguinte frase
VBMania o melhor site de vb
se eu parar o mouse sobre melhor me aparece em um label a palavra melhor !
Amigo, pra fazer isto vc precisaria saber o tamando do Width da Fonte.
Chutei alguns valores aqui, até achar um fator multiplicativo, mais o mesmo pode variar de acordo a fonte que vc utiliza em seu TextBox.
Sei que tem como pegar este tamanho via código, mais no momento não me recordo.
Por enquanto segue um exemplo definindo manualmente o tamanho da fonte.
Chutei alguns valores aqui, até achar um fator multiplicativo, mais o mesmo pode variar de acordo a fonte que vc utiliza em seu TextBox.
Sei que tem como pegar este tamanho via código, mais no momento não me recordo.
Por enquanto segue um exemplo definindo manualmente o tamanho da fonte.
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim WidthFont As Long
WidthFont = 75
Text1.SelStart = X / WidthFont
Dim AntesCursor As String
Dim PosAnt As Long
Dim DepoisCursor As String
Dim PosDps As Long
AntesCursor = Left$(Text1.Text, Text1.SelStart)
DepoisCursor = Right(Text1.Text, Len(Text1.Text) - Text1.SelStart)
PosAnt = InStr(1, StrReverse(AntesCursor), " ")
If PosAnt = 0 Then
Label1.Caption = Left(Text1.Text, InStr(1, Text1.Text, " "))
Exit Sub
End If
PosDps = InStr(1, DepoisCursor, " ")
If PosDps = 0 Then
Label1.Caption = Right(Text1.Text, InStr(1, StrReverse(Text1.Text), " "))
Exit Sub
End If
Label1.Caption = Mid(AntesCursor, Len(AntesCursor) - PosAnt + 2, Len(AntesCursor)) & _
Mid(DepoisCursor, 1, PosDps)
End Sub
Marcelo, muito Obrigado
Ajudou bastante, pelo menos agora eu sei por onde começar
a Unica coisa que deu errado foi em campos Text MultLine, a sua dica ja ajudou bastante,
Ajudou bastante, pelo menos agora eu sei por onde começar
a Unica coisa que deu errado foi em campos Text MultLine, a sua dica ja ajudou bastante,
Que isso...o q esse Marcelo faz é brincadeira...ta loco!!
Parabéns cara...vc é folder mesmo!!
Citação:Que isso...o q esse Marcelo faz é brincadeira...ta loco!!
Parabéns cara...vc é folder mesmo!!
Valeu cara...rsrs... mais que isso... não fiz nada demais não, tenho certeza que vc faria o mesmo!
Amigo Alexandre, vou testar aqui com MultLine e já posto novamente.
Alexandre,
Sgue rotina para o MultLine...
Sgue rotina para o MultLine...
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim WidthFont As Long
Dim HeightFont As Long
Dim NumLinhas As Integer
Dim SelStart As Long
Dim Conteudo As Variant
WidthFont = 74
HeightFont = 200
NumLinhas = y \ HeightFont
Conteudo = Split(Text1.Text, vbCrLf)
If NumLinhas > UBound(Conteudo) + 1 Then
NumLinhas = UBound(Conteudo) + 1
End If
For i = 1 To NumLinhas
SelStart = SelStart + Len(Conteudo(i - 1))
Next
Text1.SelStart = x / WidthFont + SelStart
Dim AntesCursor As String
Dim PosAnt As Long
Dim PosAntEnter As Long
Dim DepoisCursor As String
Dim PosDps As Long
Dim PosDpsEnter As Long
AntesCursor = Left$(Text1.Text, Text1.SelStart)
DepoisCursor = Right(Text1.Text, Len(Text1.Text) - Text1.SelStart)
PosAnt = InStr(1, StrReverse(AntesCursor), " ")
PosAntEnter = InStr(1, StrReverse(AntesCursor), vbCrLf)
' If InStr(1, Label1.Caption, "No") Then Stop
If PosAntEnter > PosAnt Then
PosAnt = PosAntEnter
End If
If PosAnt = 0 Then
Label1.Caption = Left(Text1.Text, InStr(1, Text1.Text, " "))
Exit Sub
End If
PosDps = InStr(1, DepoisCursor, " ")
PosDpsEnter = InStr(1, DepoisCursor, vbCrLf)
If PosDpsEnter < PosDps Then
PosDps = PosDpsEnter
End If
If PosDps = 0 Then
Label1.Caption = Right(Text1.Text, InStr(1, StrReverse(Text1.Text), " "))
Exit Sub
End If
Label1.Caption = Mid(AntesCursor, Len(AntesCursor) - PosAnt + 2, Len(AntesCursor)) & _
Mid(DepoisCursor, 1, PosDps) & vbCrLf
Dim ConteudoLabel As Variant
ConteudoLabel = Split(Label1.Caption, vbCrLf)
Label1.Caption = ConteudoLabel(UBound(ConteudoLabel) - 1)
End Sub
Tópico encerrado , respostas não são mais permitidas