VB 5/6-Tipp 0026: Wort unter dem Mauszeiger erfassen [RichTextbox]
von ActiveVB
Beschreibung
Hiermit kann das jeweilige Wort einer RichTextBox unter dem Mauszeiger erfasst werden.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- ' Die Komponente 'Microsoft Rich Textbox Control 6.0 (RICHTX32.OCX)' wird benötigt. '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: RichTextBox "RichTextBox1" ' Steuerelement: Beschriftungsfeld "Label1" Option Explicit Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As _ Long, ByVal wParam As Long, lParam As Any) As Long Private Const EM_CHARFROMPOS& = &HD7 Private Type POINTAPI X As Long Y As Long End Type Private Sub Form_Load() '### Beispieltext zuweisen RichTextBox1.Text = "Es ist für den Unverständigen schwer zu be" _ & "greifen woran sie eigentlich arbeiten. Befragt man sie, so " _ & "erhält man übrigens detaillierte und geduldige Auskunft dar" _ & "über, daß sie an etwas arbeiten, was die unabdingbare Vorau" _ & "ssetzung für ein weiteres Vorhaben ist, das vielleicht sein" _ & "erseits nur Mittel zum Zweck ist. Nie findet man sie mit et" _ & "was Endgültigem, es scheint die Essenz ihres Strebens zu se" _ & "in, daß sich alles im Fluß befindet. Vielleicht hat ihr Hob" _ & "by eigentlich keinen Zweck und ist somit das edelste überha" _ & "upt; sie arbeiten unermüdlich für etwas, das sie nie erreic" _ & "hen, dem sie nicht einmal nahekommen, ein Zustand endloser " _ & "Glückseligkeit!" End Sub Private Sub RichTextBox1_MouseMove(Button%, Shift%, X As Single, _ Y As Single) Dim Text$ Text = GetWord(RichTextBox1, X, Y) If Label1.Caption <> Text Then Label1.Caption = Text End Sub Private Function GetWord(Rich As RichTextBox, ByVal X&, _ ByVal Y&) As String Dim POS&, P1&, P2& Dim Char$ Dim MPointer As POINTAPI '### Position des Textzeichens unter dem Mauszeiger auslesen MPointer.X = X \ Screen.TwipsPerPixelX MPointer.Y = Y \ Screen.TwipsPerPixelY POS = SendMessage(Rich.hWnd, EM_CHARFROMPOS, 0&, MPointer) If POS <= 0 Then Exit Function '### Wortanfang finden For P1 = POS To 1 Step -1 Char = Mid$(Rich.Text, P1, 1) If Not CheckChar(Char) Then Exit For Next P1 P1 = P1 + 1 '### Wortende finden For P2 = POS To Len(Rich.Text) Char = Mid$(Rich.Text, P2, 1) If Not CheckChar(Char) Then Exit For Next P2 P2 = P2 - 1 If P1 < P2 Then GetWord = Mid$(Rich.Text, P1, P2 - P1 + 1) End Function Private Function CheckChar(ByVal Char$) As Boolean '### Testen auf Trennzeichen eines Wortes If ((Char >= "0" And Char <= "9") Or _ (Char >= "a" And Char <= "z") Or _ (Char >= "A" And Char <= "Z") Or _ (InStr("äöüÄÖÜß", Char))) Then CheckChar = True End Function '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 5 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Martin am 02.10.2006 um 12:38
Ist es möglich das auch Systemweit zu überwachen?
Und das Wort dann mit der Kombination
"Strg+Rechte Maustaste" z.b. eine MSG-Box zu öffnen in der das Wort steht?
Danke!
Kommentar von Martin Wagner am 01.06.2004 um 12:32
Tolle Lösung .. gefällt mir sehr gut !!
Kommentar von Max am 15.04.2004 um 13:07
Ist es auch irgendwie möglich, per Mauszeiger NetSend-Nachrichten auszulesen? Wenn ja, wie?
Grüße, Max
Kommentar von Götz Reinecke am 29.01.2001 um 17:24
Hallo Franz, ich habe besagtes Problem zwar nicht, aber ändere mal den Variablen-Namen "MousePointer" in der Funktion GetWord allgemein auf "MPointer"; kann sein daß es deswegen Konflikte gibt.
Gruß
Götz
Kommentar von Franz Kass am 29.01.2001 um 16:58
Funktioniert nicht; Programm bricht beim Start ab. Fehler in der Funktion GetWord, "mousepointer" ist invertiert; Meldung: "Argumenttype ByRef unverträglich".
Wo liegt der Fehler?
Gruß,
Franz