pozycja karetki w richedit (w px)

0

Witam. Szukałem, ale nie znalazłem...
Mam richedit ze sformatowanym tekstem... I chcę odczytać pozycję karetki od brzegów richedita w pikselach.

Oto zobrazowanie tego o co mi chodzi ;)

user image

Chcę właśnie odczytać zaznaczoną na rysunku szerokość i długość. Jak to zrobić?

0

Ja nie mam pojęcia jak to zrobić :P Mierzyć pozycję w znakach chyba umiesz: za pomocą właściwości CaretPos.X i CaretPos.Y .
Natomiast co do szerokości w pikselach, to może można by było przenieść ten tekst na TCanvas i dopiero w TCanvas zmierzyć długość w pikselach. Nie pytaj się mnie o szczegóły, bo jeszcze nigdy na TCanvas nie rysowałem. Informacji poszukaj w helpie.
BTW: wiem, że to głupi pomysł, ale zawsze warto spróbować :P

0

Jeżeli używasz czcionki, w której każdy znak ma taką samą szerokość (np. Courier New) możesz sprawdzić po ilu znakach znajduje sie kursor i pomnożyć to przez szerokość znaku (szerokość z Canvas.TextWidth). Jeżeli używasz czcionki o różnych szerokościach, możesz pobierać każdy znak z tej linijki aż do kursora i dodawać ich szerokości do siebie. (więcej pracy jeżeli tekst zawiera formatowanie, itp. wtedy musialbys brac pod uwagę wielkość każdego znaku, itp.).

0

no niestety mam tekst z formatowaniem - różne wielkości fontów, różne kroje fontów, pogrubienie, kursywa, itp.
;-(

może ktoś jeszcze będzie umiał mi pomóc?

0

Wiem, że w SynEdicie jest taka właściwość:

function SynEdit.GetXPix : Integer;
function SynEdit.GetYPix : Integer;

Możesz albo skorzystać z SE, albo sprawdzić jak to tam jest zrobione (SE jest open source).

1 użytkowników online, w tym zalogowanych: 0, gości: 1