Jak to właściwie jest z pikselami w RichEdit? Paragraph.LeftIndent ma być podany w pikselach ale po przeliczeniu z milimetrow wg wzoru
=Round(mm*Screen.PixelsPerInch/25.4) daje inny rozmiar na ekranie jak np Panel1.Width
A może ktoś mi podpowie jak odczytać CaretPos w pikselach ?
zacząłem:
function GetCaretPixPos(RichEdit1:TRichEdit):TPoint;
var
P:TPoint;
begin
with RichEdit1 do
begin
GetCaretPos(P);
..............
Result?????????
end;
end;
i...
Tyle wymyśliłem ... :-(
Robię to tak:
- Tworzę pomocniczego Canvasa
- Ustawiam RichEdit1.Paragraph.RightIndent np: RichEdit1.Width div 2
- Wpisuję w pętli jakąś literkę (chyba najlepiej l) do RichEdita aż zapełnię do końca linię
- Otrzymuję współczynnik przeliczeniowy:
(RichEdit1.Width div 2)/ Canvas.TextWidth(string_z_wpisanych_literek)
Przeciez litery maja rozne szerokosci , wiec co Ci da wsplczynnik liczony w oparciu o jedną litere? Troche to bez sensu, no albo nie rozumiem tego co napisałeś.
Chodzi o zmierzenie RichEdit.Paragraph.RightIndent(lub Left) w "normalnych" pikselach (patrz pierwsze moje pytanie), jest tutaj mały błąd ale po poprawce metoda się sprawdza. Daj RichEditowi jakiś indent i zobaczysz że tak sie on ma to pikseli ekranowych jak 3/4 (albo 4/3-nie pamietam)
A tak to to wiem, i nie bardzo to rozumiem , tym bardzije ze u mnie jest to 3/5 a nie 3/4- nie mam pojecia dlaczego.
Ja też nie wiem skąd to się bierze dlatego pomysł takiej protezy - na pewno jest jakieś prościutkie rozwiązanie, ale to chyba trzeba kogoś kto grzebał w źródłach RichEdita