Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Richedit, die Pixelposition einer Zeile herausfinden (https://www.delphipraxis.net/76867-richedit-die-pixelposition-einer-zeile-herausfinden.html)

Alibi 11. Sep 2006 14:12


Richedit, die Pixelposition einer Zeile herausfinden
 
Hi,
ich möchte neben den Zeilen eines Richedits darauf zeigende Pfeile auf einem Canvas malen. Soweit ja kein Problem, bloß wenn gescrollt wird... Zeilen können ja auch nur halb zu sehen sein, wie krieg ich also heraus, welche "Pixel-Y-Koordinate" eine bestimmte Zeile hat?

// Edit:
GetCaretPos scheint gut auszusehen. :)

// Edit2:
GetCaretPos ignoriert den *Offset* von halb sichtbaren Zeilen :/

Flocke 11. Sep 2006 15:48

Re: Richedit, die Pixelposition einer Zeile herausfinden
 
Mit der Meldung MSDN-Library durchsuchenEM_POSFROMCHAR bekommst du für eine Zeichenposition (wie z.B. SelStart) die Pixelkoordinate (bezogen auf den aktuell sichtbaren Ausschnitt). MSDN-Library durchsuchenEM_CHARFROMPOS ist quasi die Umkehrfunktion - damit könntest du dir das erste sichtbare Zeichen ermitteln.

Falls du es brauchst: mit MSDN-Library durchsuchenEM_GETSCROLLPOS kriegst du die "virtuelle" Pixelkoordinate der linken oberen Ecke - wenn der User also 100 Pixel nach unten und 20 nach rechts gescrollt hat, dann eben 20 und 100.

// Nachtrag

Das JvRichEdit hat dafür übrigens schon eine Funktion: GetCharPos.

Alibi 11. Sep 2006 16:03

Re: Richedit, die Pixelposition einer Zeile herausfinden
 
Hm, ich bekomme IMMER als y-Koordinate "1", wo liegt mein Fehler?
rdtSentences.Perform(EM_POSFROMCHAR,integer(@test) ,0);

test ist ein TPoint.

Flocke 11. Sep 2006 17:17

Re: Richedit, die Pixelposition einer Zeile herausfinden
 
Das ist der eine Pixel Rand, den ein RichEdit standardmäßig hat. Wenn du als dritten Parameter (lParam) immer 0 angibst, dann ist nicht verwunderlich, dass du immer 1 herausbekommst. Versuche mal z.B. SelStart und lasse dir in OnSelChange anzeigen, bei welcher X/Y-Position der markierte Text liegt.

Alibi 11. Sep 2006 17:36

Re: Richedit, die Pixelposition einer Zeile herausfinden
 
Ah, funktioniert wunderbar, besten dank! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz