pozycja karetki w richedit (w px)

pozycja karetki w richedit (w px)
LE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 144
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ć?

TX
  • Rejestracja: dni
  • Ostatnio: dni
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

_Nex_
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 507
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.).

LE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 144
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?

Ad
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
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).

Kopiuj

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.