| |
| In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.
Hinweis: Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden! | Fragen zu Tipps & Tricks und Workshops im vb@rchivTipp 996: Beliebige Zeile einer (Rich-)TextBox auslesen | | | Autor: Phoenixx1976 | Tipp anzeigenDatum: 21.04.08 10:13 |
| Hallo,
habe den Code wie im Tipp verwendet, bekomme aber in der Zeile:
SendMessage hWnd, EM_GETLINE, nLine, Buffer(0)
die Fehlermeldung: Typen unverträglich - Buffer ist dabei markiert..
Ich verwende VB6 mit neuestem ServicePack auf WinXp SP2
Gruß Phoenixx1976 | |
Re: Beliebige Zeile einer (Rich-)TextBox auslesen | | | Autor: Phoenixx1976 | Datum: 21.04.08 10:41 |
| Der Code ist 1:1 aus dem Tipp übernommen, incl. API | |
Re: Beliebige Zeile einer (Rich-)TextBox auslesen | | | Autor: Phoenixx1976 | Datum: 21.04.08 10:51 |
| Leider nicht.
Es funktioniert alles, mit Ausnahme von EM_GETLINE | |
Re: Beliebige Zeile einer (Rich-)TextBox auslesen | | | Autor: Phoenixx1976 | Datum: 21.04.08 11:18 |
| 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_GETLINE = &HC4
Private Const EM_GETSEL = &HB0
Private Const EM_LINEFROMCHAR = &HC9
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1
Private Function GetRowContent(hwnd As Long, _
Optional ByVal nLine As Long = 0) As String
Dim CursorPos As Long
Dim FirstChar As Long
Dim RowLength As Long
Dim Buffer() As Byte
' Falls keine Zeilennummer angegeben,
' Inhalt der aktuellen Zeile ermitteln
If nLine < 1 Then
CursorPos = SendMessage(hwnd, EM_GETSEL, 0, ByVal 0&) \ 65536
nLine = SendMessage(hwnd, EM_LINEFROMCHAR, CursorPos, ByVal 0&)
Else
nLine = nLine - 1
End If
' Zeilenlänge ermitteln
FirstChar = SendMessage(hwnd, EM_LINEINDEX, nLine, ByVal 0&)
RowLength = SendMessage(hwnd, EM_LINELENGTH, FirstChar, ByVal 0&)
' Puffer vorbereiten
ReDim Buffer(RowLength + 1)
Buffer(0) = RowLength + 1
' Zeileninhalt in Puffer auslesen
SendMessage hwnd, EM_GETLINE, nLine, Buffer(0)
' Inhalt als String zurückgeben
GetRowContent = Left$(StrConv(Buffer, vbUnicode), RowLength)
End Function
Aufgerufen wird das ganze per Clickevent der TextBox:
Private Sub rtfText_Click()
Dim sLine As String
sLine = GetRowContent(rtfText.hWnd)
WriteRichTextBoxText sLine, frmState.rtfText, RGB(0, 0, 0) ''vorläufige ausgabe
End Sub | |
Re: Beliebige Zeile einer (Rich-)TextBox auslesen | | | Autor: Phoenixx1976 | Datum: 21.04.08 11:54 |
| Merkwürdig, ich bekomm da die o.g. Fehlermeldung..
| |
Re: Beliebige Zeile einer (Rich-)TextBox auslesen | | | Autor: Phoenixx1976 | Datum: 21.04.08 12:21 |
| Nachdem ich den Code gelöscht und vollständig neu eingebaut habe, läufts eigenartigerweise.
Mir ist unklar warum, da ich den Code per Copy and Paste übernommen hatte - wie jetzt auch.
Ich nehm daher alles zurück, entschuldige mich vielmals und behaupte nun das Gegenteil.. | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|