Mm i piksele w RichEdit

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

JO
  • Rejestracja: dni
  • Ostatnio: dni
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 ... :-(

JO
  • Rejestracja: dni
  • Ostatnio: dni
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)
Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
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ś.

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

Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
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.

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

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.