RichMemo/pl

From Lazarus wiki
Jump to navigationJump to search

English (en) polski (pl) русский (ru)

RichMemo na MacOSX. Podziękowania dla Dominique'a Louisa

RichMemo jest pakietem zawierającym komponent zastępujący ten z Delphi - TRichEdit. Jest zaprojektowany tak, aby działał na wielu platformach, czyli na Win32, MacOSX oraz Linuxie. Dzięki temu, że jego głównym celem jest działanie na wielu platformach, natywne RichMemo API można z łatwością rozszerzyć tak, by było kompatybilne z Delphi.

Głównymi cechami tego komponentu są:

  • Podświetlanie tekstu
  • Wsparcie dla obsługi systemowego kodowania Unicode

Planowane: (patche mile widziane)

  • Wstawianie obrazów do tekstu
  • Osadzanie kontrolek LCL?

Pobierany plik ZIP zawiera komponent, pakiet instalacyjny oraz aplikację demonstracyjną, która ukazuje funkcje komponentu (zależą one od platformy, więcej w tabeli na dole artykułu).

W razie potrzeby prosimy dodać swoje raporty bugów czy też prośby o nowe funkcje na Github.

Licencja

Autor: Dmitry 'skalogryz' Boyarintsev

Zmodyfikowana licencja LGPL (taka sama jak w FPC RTL i Lazarus LCL) . Możesz skontaktować się z autorem, jeśli zmodyfikowany LGPL nie współpracuje z licencją Twojego projektu.

Pobieranie

Ostatnia wersja dostępna jest tutaj: https://github.com/skalogryz/richmemo

Wersję testową można pobrać tutaj: https://github.com/skalogryz/richmemo/archive/refs/heads/master.zip. Snapshot jest aktualizowany co wieczór.

Zmiany

  • Wersja 1.0.0 z 22 czerwca 2009 r.
  • Wersja 0.8.0 z czerwca 2009 r.

Zależności / Wymagania systemowe

  • Lazarus 1.0.0

Status: Opublikowano.

Instalacja

  • Pobierz pakiet.
  • Otwórz go, zainstaluj i przebuduj IDE.
  • TRichMemo zostanie dodane na stronę ,,Common Controls".

RichMemoPalette.PNG

TRichMemo

Parametry czcionki

Parametry czcionki są głównie reprezentowane przez rekord TFontParams. Ten typ jest przeznaczony do opisu bogatych atrybutów czcionki. Niektóre atrybuty wykraczają poza zakres klasy TFont, więc potrzebny był dodatkowy typ. Jednak większość typów danych związanych z TFont jest ponownie używana (tzn. TFontStyles).

  • Name - nazwa (rodzina) czcionki.
  • Size - rozmiar czcionki w punktach (ujemne wartości mogą spowodować niespodziewane skutki).
  • Color - kolor czcionki.
  • Style - style czcionki, w tym pogrubienie, kursywa, przekreślenie, podkreślenie.
  • HasBkClr - flaga typu boolean, gdzie tekst powinien mieć swój kolor tła (jeżeli prawda, to BkColor jest używany, w przeciwnym wypadku nie). Przezroczystość nie jest wspierana.
  • BkColor - kolor tła (a'la podświetlenie) tekstu.
  • VScriptPos - poziome położenie tekstu
    richmemo indeksy.png
    .
    • vpNormal - normalne.
    • vpSubscript - indeks dolny.
    • vpSuperscript - indeks górny.
Rzeczywiste przesunięcie pionowe indeksów zależy od systemu operacyjnego i obecnie nie można tego kontrolować.

TFontParams możesz przypisać do struktury TFont, lecz aby tego dokonać, powinieneś użyć funkcji GetFontParams(afont: TFont). Uwaga - większość komponentów LCL ma ustawione wartości TFont na domyślne (ang. ,,default"), ale nie są to wartości w pełni rzeczywiste, lecz raczej są wskazaniem domyślnej czcionki danej kontrolki (coś jak clDefault dla TColor).

Funkcja GetFontParams rozwiązuje ten problem i zwraca rzeczywistą nazwę czcionki.

Metody

SetTextAttributes

procedure SetTextAttributes(TextStart, TextLen: Integer; AFont: TFont);
  • TextStart : Integer - pierwszy znak do zmodyfikowania
  • TextLen : Integer - liczba znaków do zmodyfikowania
  • AFont : TFont - czcionka, jaka ma być zastosowana do danej części tekstu
procedure SetTextAttributes(TextStart, TextLen: Integer; const TextParams: TFontParams);
  • TextStart : Integer - pierwszy znak do zmodyfikowania
  • TextLen : Integer - liczba znaków do zmodyfikowania
  • TextParams : TFontParams - parametry czcionki do ustawienia

Parsowanie języka znacznikowego

Przykład działania mlparse

Natywne kontrolki rich-edit nie obsługują parsowania języka znacznikowego (np. HTMLa) - potrzebujesz do tego własnego zaimplementowanego parsera (przykład na zdjęciu obok).

Internale

Wsparcie platform - tabela

Funkcja Win32 Gtk2 Qt Cocoa Carbon
Kolor czcionki i jej style w zaznaczeniu Tak Tak Tak Tak Tak
Kolor tła czcionki Tak Tak Tak Tak Nie
Indeks dolny i górny Tak Tak Nie Nie Nie
Pobranie stylu z zakresu (GetStyleRange) Tak Tak Nie Tak Tak
Wyrównanie akapitu Tak Tak Tak Tak Prawie niemożliwe
Metryki akapitu Tak Tak Nie Tak Prawie niemożliwe
Tabulatory Tak Tak Nie Tak Nie
Powiększanie Tak Niekompletne Nie Tak Nie
Drukowanie Tak Nie Nie Nie Nie
Otwieranie/Zapisywanie tekstu sformatowanego (RTF) Sytem RichMemo Nie System System
Wkładki (ang. ,,Insertables") Tak Tak Nie Nie Nie

Win32

RichMemo bez motywu systemowego
RichMemo z motywem systemowym