Mm i piksele w RichEdit

0

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

0

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 ... :-(

0

Robię to tak:

  1. Tworzę pomocniczego Canvasa
  2. Ustawiam RichEdit1.Paragraph.RightIndent np: RichEdit1.Width div 2
  3. Wpisuję w pętli jakąś literkę (chyba najlepiej l) do RichEdita aż zapełnię do końca linię
  4. Otrzymuję współczynnik przeliczeniowy:
    (RichEdit1.Width div 2)/ Canvas.TextWidth(string_z_wpisanych_literek)
0

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ś.

0

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)

0

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.

0

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

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