vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Inhalt der aktuellen Zeile einer RTF-Box oder Länge der aktuellen Zeile 
Autor: vb__
Datum: 18.03.04 12:58

Hallo,

wie kann man den Inhalt oder die Länge der aktuellen Zeile der RTF-Box ermitteln?

Danke und MfG

vb__
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Inhalt der aktuellen Zeile einer RTF-Box oder Länge der aktuellen Zeile 
Autor: ModeratorDieter (Moderator)
Datum: 18.03.04 21:16

Schau mal in unsere Tipps & Tricks Abteilung.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Inhalt der aktuellen Zeile einer RTF-Box oder Länge der aktuellen Zeile 
Autor: vb__
Datum: 18.03.04 22:20

Hi Dieter,

das habe ich schon. Leider stürzte VB aber immer ab. Habe jetzt aber einen anderen Weg gefunden.

MfG

vb__
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Inhalt der aktuellen Zeile einer RTF-Box oder Länge der aktuellen Zeile 
Autor: ModeratorDieter (Moderator)
Datum: 19.03.04 00:53

Hi vb__,

nur so aus Interesse: wie hast Du das Problem gelöst?
Evtl. könnte man das ja als Tipp einstellen

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Inhalt der aktuellen Zeile einer RTF-Box oder Länge der aktuellen Zeile 
Autor: vb__
Datum: 19.03.04 13:08

Hi Dieter,

Private Function GetRowContent(hWnd As Long) As String
 
  Dim CursorPos As Long
  Dim Line As Long
  Dim FirstChar As Long
  Dim RowLength As Long
  Dim Buffer() As Byte
 
  CursorPos = SendMessage(hWnd, EM_GETSEL, 0, ByVal 0&) \ 65536
  Line = SendMessage(lngHWnd, EM_LINEFROMCHAR, CursorPos, ByVal 0&)
  FirstChar = SendMessage(lngHWnd, EM_LINEINDEX, Line, ByVal 0&)
  RowLength = SendMessage(lngHWnd, EM_LINELENGTH, FirstChar, ByVal 0&)
 
  ReDim Buffer(RowLength)
  Buffer(0) = RowLength
 
  SendMessage hWnd, EM_GETLINE, Line, abytBuffer(0)
  GetLineContent = Left$(StrConv(Buffer, vbUnicode), RowLength)
 
End Function
Der heutige Tipp mit dem Spaltentausch ist super. Noch besser fände ich es, wenn man das auch beim sevDataGrid hinbekommen könnte. Hab das zwar schon mal versucht, aber leider nicht hinbekommen. Vielleicht wär das ja was für den Tipps & Tricks Bereich (oder für sevDataGrid 2.0 ).

MfG

vb__
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

--KORRIGIERTE VERSION-- 
Autor: vb__
Datum: 19.03.04 13:10

--KORRIGIERTE VERSION--

Hi Dieter,

Private Function GetRowContent(hWnd As Long) As String
 
  Dim CursorPos As Long
  Dim Line As Long
  Dim FirstChar As Long
  Dim RowLength As Long
  Dim Buffer() As Byte
 
  CursorPos = SendMessage(hWnd, EM_GETSEL, 0, ByVal 0&) \ 65536
  Line = SendMessage(lngHWnd, EM_LINEFROMCHAR, CursorPos, ByVal 0&)
  FirstChar = SendMessage(lngHWnd, EM_LINEINDEX, Line, ByVal 0&)
  RowLength = SendMessage(lngHWnd, EM_LINELENGTH, FirstChar, ByVal 0&)
 
  ReDim Buffer(RowLength)
  Buffer(0) = RowLength
 
  SendMessage hWnd, EM_GETLINE, Line, abytBuffer(0)
  GetRowContent = Left$(StrConv(Buffer, vbUnicode), RowLength)
 
End Function
Der heutige Tipp mit dem Spaltentausch ist super. Noch besser fände ich es, wenn man das auch beim sevDataGrid hinbekommen könnte. Hab das zwar schon mal versucht, aber leider nicht hinbekommen. Vielleicht wär das ja was für den Tipps & Tricks Bereich (oder für sevDataGrid 2.0 ).

MfG

vb__
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: --KORRIGIERTE VERSION-- 
Autor: ModeratorDieter (Moderator)
Datum: 19.03.04 13:17

Hi vb__,

danke für den Code.
Wenn Du nichts dagegen hast, werde ich den Tipp im Laufe der nächste unter Deinem Namen (vb__) veröffentlichen.

Zu dem heutigen Tipp: Solch eine Funktion ist bereits für die Version 2.0 von sevDataGrid "vorgemerkt".

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Jetzt aber: 
Autor: vb__
Datum: 19.03.04 13:35

Hi Dieter,

war doch noch ein Fehler drin. Jetzt sollte es aber klappen:

Private Function GetRowContent(hWnd As Long) As String
 
  Dim CursorPos As Long
  Dim Line As Long
  Dim FirstChar As Long
  Dim RowLength As Long
  Dim Buffer() As Byte
 
  CursorPos = SendMessage(hWnd, EM_GETSEL, 0, ByVal 0&) \ 65536
  Line = SendMessage(hWnd, EM_LINEFROMCHAR, CursorPos, ByVal 0&)
  FirstChar = SendMessage(hWnd, EM_LINEINDEX, Line, ByVal 0&)
  RowLength = SendMessage(hWnd, EM_LINELENGTH, FirstChar, ByVal 0&)
 
  ReDim Buffer(RowLength)
  Buffer(0) = RowLength
 
  SendMessage hWnd, EM_GETLINE, Line, Buffer(0)
  GetRowContent = Left$(StrConv(Buffer, vbUnicode), RowLength)
 
End Function
MfG

vb__
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Jetzt aber: 
Autor: Danny Grobe
Datum: 20.05.16 15:28

Warum dieses:
Buffer(0) = RowLength
Das führt nur dazu, dass es einen Überlauf gibt, wenn die aktuelle Zeile länger ist als 255 Zeichen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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