SynEdit Markup/pl: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: SynEdit Markup/pl
| Old | New | Line | |
|---|---|---|---|
| 1 | + | Aby uzyskać więcej informacji na temat SynEdit, przejdź do: [[SynEdit/pl|SynEdit]]\ | |
| 2 | + | Ta strona jest wersją roboczą.... | |
| 3 | + | ||
| 4 | + | # Terminologia | |
| 5 | + | ||
| 6 | + | Coloring (Kolorowanie) | |
| 7 | + | Stosowanie atrybutów do tekstu. Kolor tekstu i tła, pogrubienie, kursywa, podkreślenie, kolorowa ramka lub częściowa ramka (w tym linia zygzakowata). Nazywane także **podświetlaniem**, chociaż termin ten jest niejednoznaczny, ponieważ może odnosić się albo do całego kolorowania, albo tylko do kolorowania za pomocą podświetlacza. | |
| 8 | + | ||
| 9 | + | Highligher (Podświetlacz) | |
| 10 | + | [[SynEdit Highlighter/pl|Podświetlacz SynEdit]] | |
| 11 | + | ||
| 12 | + | Markup (Znacznik) | |
| 13 | + | TSynEditMarkup | |
| 14 | + | ||
| 15 | + | token (token) | |
| 16 | + | Fragment tekstu. Zwykle część linii. Może to dotyczyć granic słów, ale także sięgać do poszczególnych liter. | |
| 17 | + | ||
| 18 | + | # O TSynEditMarkup | |
| 19 | + | ||
| 20 | + | TSynEditMarkup pozwala na zmianę kolorystyki zapewnianej przez Podświetlacz. | |
| 21 | + | ||
| 22 | + | Używany jest głównie do: | |
| 23 | + | ||
| 24 | + | - kolorowania zaznaczenia | |
| 25 | + | - kolorowania bieżącej linii | |
| 26 | + | - kolorowania specjalnych linii (błąd, punkt przerwania...) | |
| 27 | + | - kolorowania pasujących nawiasów „()” | |
| 28 | + | - kolorowania „ctrl links” =\> kiedy możesz kliknąć identyfikator, aby przejść do jego deklaracji | |
| 29 | + | - kolorowania bieżącego słowa (słowo w karetce) | |
| 30 | + | - dopasowania kolorystyki początku/końca bloku | |
| 31 | + | - kolorowania „lowlight” nieaktywne ifdef (przy użyciu codetools) | |
| 32 | + | ||
| 33 | + | i więcej | |
| 34 | + | ||
| 35 | + | # Skąd pobierany jest kolor | |
| 36 | + | ||
| 37 | + | Metoda malowania SynEdits pobiera tekst w postaci „tokenu”. | |
| 38 | + | ||
| 39 | + | Głównym źródłem tych tokenów jest Podświetlacz. Np. w wierszu: | |
| 40 | + | ||
| 41 | + | ``` pascal | |
| 42 | + | a := 1; // komentarz | |
| 43 | + | ``` | |
| 44 | + | ||
| 45 | + | Tokeny reprezentują | |
| 46 | + | ||
| 47 | + | - "a " normalny tekst | |
| 48 | + | - ":=" symbol (pomalowany na inny kolor) | |
| 49 | + | - " " normalny tekst | |
| 50 | + | - "1" numer (pomalowany w innym kolorze) | |
| 51 | + | - ";" symbol (pomalowany na inny kolor) | |
| 52 | + | - " " normalny tekst | |
| 53 | + | - "// komentarz" komentarz (pomalowany na inny kolor) | |
| 54 | + | ||
| 55 | + | Zobacz także [[SynEdit Highlighter/pl|Podświetlacz SynEdit]]. | |
| 56 | + | ||
| 57 | + | Te tokeny są pobierane za pośrednictwem listy TLazSynDisplayView (w połączeniu z opakowaniami TSynEditStrings bufora TextBuffer). Nie ma to znaczenia przy kolorowaniu. Chociaż TLazSynDisplayView może zmienić kolor. | |
| 58 | + | ||
| 59 | + | Każdy token jest następnie wprowadzany na listę TSynEditMarkup. Każdy TSynEditMarkup może zdefiniować dodatkowe kolorowanie. Jeśli tak się stanie, tokeny zostaną podzielone na mniejsze części, a kolory zostaną połączone/wymieszane/wymienione w razie potrzeby. | |
| 60 | + | ||
| 61 | + | # TSynEditMarkup | |
| 62 | + | ||
| 63 | + | TODO | |
| 64 | + | ||
| 65 | + | Podczas malowania wywoływane są następujące metody | |
| 66 | + | ||
| 67 | + | * | |
| 68 | + | ||
| 69 | + | ``` pascal | |
| 70 | + | Procedure PrepareMarkupForRow(aRow : Integer); virtual; | |
| 71 | + | Procedure FinishMarkupForRow(aRow : Integer); virtual; | |
| 72 | + | ``` | |
| 73 | + | ||
| 74 | + | * | |
| 75 | + | ||
| 76 | + | ``` pascal | |
| 77 | + | Procedure BeginMarkup; virtual; | |
| 78 | + | Procedure EndMarkup; virtual; | |
| 79 | + | ``` | |
| 80 | + | ||
| 81 | + | * | |
| 82 | + | ||
| 83 | + | ``` pascal | |
| 84 | + | Procedure GetNextMarkupColAfterRowCol(const aRow: Integer; | |
| 85 | + | const aStartCol: TLazSynDisplayTokenBound; | |
| 86 | + | const AnRtlInfo: TLazSynDisplayRtlInfo; | |
| 87 | + | out ANextPhys, ANextLog: Integer); virtual; abstract; | |
| 88 | + | ``` | |
| 89 | + | ||
| 90 | + | Biorąc pod uwagę bieżącą pozycję (numer linii malowania ARow, X jest określony w AStartCol), to znacznik musi ustawić ANextPhys lub ANextLog na następną pozycję X, w której chce zmienić kolorowanie. | |
| 91 | + | ||
| 92 | + | Jeśli znacznik chce zmienić tekst na pogrubiony z X=5 na X=10 i X=15 na X=20, to | |
| 93 | + | ||
| 94 | + | - dla dowolnego AStartCol w zakresie od 1 do 4 =\> ANext... = 5 (przełącz na pogrubienie w punkcie 5) | |
| 95 | + | - dla dowolnego AStartCol w zakresie od 5 do 9 =\> ANext... = 10 (przełącz na brak modyfikacji przy 10) | |
| 96 | + | - dla dowolnego AStartCol w zakresie od 10 do 14 =\> ANext... = 15 (przełącz na pogrubienie przy 15) | |
| 97 | + | - dla dowolnego AStartCol w zakresie od 15 do 19 =\> ANext... = 20 (przełącz na brak modyfikacji przy 20) | |
| 98 | + | ||
| 99 | + | * | |
| 100 | + | ||
| 101 | + | ``` pascal | |
| 102 | + | Function GetMarkupAttributeAtRowCol(const aRow: Integer; | |
| 103 | + | const aStartCol: TLazSynDisplayTokenBound; | |
| 104 | + | const AnRtlInfo: TLazSynDisplayRtlInfo) : TSynSelectedColor; virtual; abstract; | |
| 105 | + | ``` | |
| 106 | + | ||
| 107 | + | Jeśli AStartCol mieści się w jakimkolwiek zakresie, w którym znacznik chce zmienić kolor, musi zwrócić poprawną * dla dowolnego AStartCol w zakresie od 5 do 9 =\> ANext... = 10 (przełącz na brak modyfikacji przy 10) | |
| 108 | + | ||
| 109 | + | # Zobacz także | |
| 110 | + | ||
| 111 | + | - <https://forum.lazarus.freepascal.org/index.php/topic,47778.msg342734.html#msg342734> | |
| 112 | + | ||
| 113 | + | --- | |
| 114 | + | *From the Free Pascal wiki, page "SynEdit Markup/pl", as it stood on 2024-03-12 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 115 | + | Category: Components | |
| 116 | + | Category: Lazarus | |
| 117 | + | Category: SynEdit |
