Wizualny defekt z kolorowaniem StringGrid

Wizualny defekt z kolorowaniem StringGrid
ET
  • Rejestracja:około 11 lat
  • Ostatnio:około 11 lat
  • Postów:9
0

Witam

Poczytałem trochę na temat kolorowania pół string grid i wybrałem moim zdaniem najprostszy sposób do mojego celu, ale pojawił się problem.
Wpisałem sobie taki kod:

Kopiuj
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
const nr : array [0..22] of Boolean = (false, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false);
begin
  if nr[ARow] then begin
    StringGrid1.Canvas.Brush.Color:= $00FDECD7;
    StringGrid1.Canvas.Rectangle(aRect);
    StringGrid1.Canvas.TextOut(aRect.Left,aRect.Top,StringGrid1.Cells[ACol,ARow] );
  end;
end;

Kod ten koloruje całe wiersze w STringGrid ustawionym kolorem w Canvas.Brush.Color.
Posłużyłem się tablicą stałych bo koloruje sobie wybrane wiersze w efekcie mam 2 wiersze białe kolejne 2 pokolorowane i tak na zmianę.
Ale jest jeden wizualny problem. Jeśli koloruję w ten sposób to przesuwa mi się tekst w tych wierszach które pokolorowałem i dodatkowo pojawiają się wygryzione linie efekt nakładania się pola z tekstem na linie dzielącą komórki ale tu ta linia robi się grubsza.
Dołączam screena:

user image

Jak to coś naprawić, żeby tekst nie przesuwał się tak jak w tych wierszach, które nie kolorowałem???

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
1
Kopiuj
StringGrid1.Canvas.TextOut(aRect.Left+3,aRect.Top+3,StringGrid1.Cells[ACol,ARow] );

Poza tym, jak narysujesz wszystkie to wszystkie będą wyglądać podobnie.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
flowCRANE
Byłeś szybszy ;)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Tuchów
  • Postów:12167
0
Kopiuj
StringGrid1.Canvas.TextOut(aRect.Left,aRect.Top,StringGrid1.Cells[ACol,ARow] );

W tej metodzie musisz dodać offsety od lewej i górnej krawędzi, bo inaczej tekst będzie dosunięty;

Kopiuj
StringGrid1.Canvas.TextOut(ARect.Left + 2, ARect.Top + 2, StringGrid1.Cells[ACol, ARow]);

Ta linijka spowoduje narysowanie tekstu z dwupikselowym marginesem (od lewej i od góry); Jeśli chcesz większe marginesy to zwiększ offsety;

Dobra rada - jak już zabierasz się za własne malowanie komponentu, to maluj każdy wiersz; Dzięki temu będziesz miał jednakowo malowane i te białe, i te niebieskie; Wszystko możesz załatwić za pomocą jednego zestawu metod rysujących - reszta to tylko ustawienie koloru tła;

Poza tym wykorzystana macierz jest zbędna, dlatego że nie wiesz ile pozycji będzie w komponencie; Możesz to przecież obliczyć, np. tak:

Kopiuj
with TStringGrid(Sender).Canvas do
begin
  Font.Color := clBlack;

  if (ARow - 1) mod 4 < 2 then
  begin
    Pen.Color := clWhite;
    Brush.Color := clWhite;
  end
  else
  begin
    Pen.Color := $00FDECD7;
    Brush.Color := $00FDECD7;
  end;

  Rectangle(ARect);
  TextOut(ARect.Left + 2, ARect.Top + 2, TStringGrid(Sender).Cells[ACol, ARow]);
end;

Dzięki temu tekst w każdym wierszu będzie miał taki sam odstęp od krawędzi komórki, no i wykluczysz konieczność stosowania macierzy wartości logicznych.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
_13th_Dragon
if ((ARow-1) mod 4) &lt; 2 then
flowCRANE
A no racja - nie zauważyłem, że są komórki nagłowkowe;
LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
0

Zamiast Canvas.Rectangle i Canvas.TextOut spróbuj Canvas.FillRect i Canvas.TextRect. W tym ostatnim X i Y daj na 0.

flowCRANE
Po co? To nie metody działają źle, tylko źle się ich używa, dlatego jest problem;
LU
Dlatego, że jest łatwiej? Szybciej? Mam kombinować z jednymi metodami, skoro obok są gotowe inne, które robią dokładnie to, czego chcę?
flowCRANE
Tak? A to ciekawe, bo TextOut i Rectangle robią dokładnie to, czego potrzebuje pytacz; Co w tym łatwiejszego, skoro to i tak dwa wywołania metod? Tyle samo kodu, tyle samo wywołań, tyle że TextRect ma więcej parametrów, niż TextOut; Gdzie Ty niby widzisz tę szybkość, łatwość?
LU
A tak konkretniej to chodzi ci o coś, czy po prostu lubisz się przypieprzać bez sensu?
flowCRANE
Kto się przypieprza? Chodzi dokładnie o to, że Twoja wypowiedź w niczym nie pomaga, bo nie jest tu winna metoda rysująca, tylko błędne jej użycie; Więc bez względu na to którą się wykorzysta i tak trzeba z niej umieć korzystać; Twój post nic nie wnosi do tematu i nic nie rozwiązuje, więc mam prawo zwrócić na to uwagę; I uważaj na słowa, bo nie jesteś u siebie na podwórku;
LU
W niczym nie pomaga powiadasz? A patrzyłeś na rozwiązanie, które podałem na następnej stronie? Widziałeś post @misiakufal, który przytacza moją wskazówkę? Człowieku, to że jesteś moderatorem nie oznacza, że możesz sobie pyskować do innych, bo mają inne zdanie na jakiś temat. Jestem na 4p, od bez mała 10 lat, ale takiego chamstwa, jak z twojej strony nie spotkałem nigdy. Sorry, ale nie mam zamiaru kontynuować bezproduktywnych dyskusji z tobą. Screen tego posta wraz z odpowiednim zgłoszeniem pójdzie do administracji, bo na zbyt wiele sobie pozwalasz.
flowCRANE
Skoro nie widzisz różnicy między dyskusją, a chamstwem to Twój problem; Chamstwem jest wyskakiwanie ze zwrotamie typu "przypieprzać" bez uzasadnieniaA patrzyłeś na post Dragona, Abrakadabera czy choćby mój? Patrzyłeś na tytuł wątku? Nie widzisz, że problemem NIE jest metoda TextOut, tylko błędnie podawane marginesy? Nie widzisz, że pytacz nie potrafi się posługiwać tą metodą? Proszę bardzo - pisz do administracji;
LU
Tak, czytałem. A ponieważ całkiem niedawno bawiłem się w podobne rzeczy postanowiłem zaproponować swój sposób rozwiązania problemu, nigdzie nie pisząc, że jest on jedyny najlepszy, a wasze propozycje są do niczego (chociaż wprowadziły jeszcze więcej zamieszania). Sam zacząłeś się przychrzaniać i to nie pierwszy raz, kiedy mam inne zdanie niż twoje. Tylko, że ja staram się odpowiadać kulturalnie i rzeczowo i bardzo nie trawię, jak ktoś głupkowato szuka zaczepki i chowa się za krzesłem moderatora. Wybacz, ale jak dla mnie koniec tematu.
flowCRANE
W takim razie podaj link do wątku, w którym pytacz został przeze mnie chamsko zjechany; Wskaż mi post, w kórym komuś ubliżyłem lub wyszukiwałem zaczepki; Już raz była wojna o zwrócenie Tobie uwagi na tytułowanie wątków - i słusznie, bo nie jesteś wyjątkiem; Napisałem Ci w pierwszym komentarzu, że winą nie jest źle działająca metoda, tylko jej złe wywołanie, na co Ty w kolejnym swoim komentarzu wyskoczyłeś z "przypieprzaniem się"; Uargumentowałem swoją wypowiedź nie używając obraźliwych słów, Ty jednak ich użyłeś; I jeszcze myślisz, że się chowam - zabawne;
LU
Chyba mnie z kimś pomyliłeś kolego, bo dawno nie zakładałem własnego wątku i nigdy nie miałem problemów z tytułowaniem. A winą nie była źle działająca/wywołana metoda wypisywania tekstu, tylko rysowanie prostokąta z OBRAMOWANIEM, zamiast samego wypełnienia obszaru kolorem. I dokładnie o to pytał kolega w tym wątku.
flowCRANE
Czyli źle skojarzłem - musiałbym poszukać, bo o coś Cię niedawno poprosiłem i spotkałem się z podobną reakcją; Co do tematu - dokładnie to otrzymał w moim poście; Oczywiście można zamienić metodę Rectangle na FillRect, jednak użycie TextRect jest nieuzasadnione i to zasugerowałem w komentarzu; Kod pytacza był dobry, tylko niepoprawne parametry użył, więc mu malowało tekst krzywo i nie ustawił koloru ołówka, więc dostał dodatkową ramkę;
LU
To teraz porównaj sobie twoje rozwiązanie z moim. Moje ogranicza się do użycia innych funkcji (od biedy można było rzeczywiście użyć TextOut, ale, dla mnie, o wiele bardziej intuicyjne jest użycie metod uszczegółowionych) i zero dodatkowych linii kodu. A twoje?
flowCRANE
Jedno przypisanie więcej (Pen), jeden parametr mniej (jeden problem z głowy), całkowite pozbycie się macierzy wartości logicznych (drugi problem z głowy), jednakowe rysowanie tekstu we wszystkich wierszach (kolejny problem wyrównania tekstu z głowy); Źle?
LU
Zero przypisań więcej, zero linii więcej, zero ingerencji w oryginalny algorytm problemu, podany sposób rozwiązuje problem w całości prostymi środkami i jednocześnie wskazuje źródło błędu. Gorzej? Nic nie wnosi do tematu?
flowCRANE
FillRect poniekąd, bo przysporzył kolejnego problemu, TextRect nic;
LU
I znowu się mylisz, bo FillRect rozwiązał problem pojawiającej się ramki i nie miał nic wspólnego z rozsypywaniem się tekstu.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Jak Ci to zacznie działać w zadowalający sposób to podaj rozwiązanie, ciekaw jestem efektu.

ET
  • Rejestracja:około 11 lat
  • Ostatnio:około 11 lat
  • Postów:9
0

Dodanie po 2 piksele nie do końca pomaga , na to już wcześniej wpadłem w tych wierszach kolorowanych są pogrubione szare linie i tekst nadal jest bliżej lewej krawędzi, a dodawanie większej ilości jeszcze pogarsza efekt.

Malowanie całości też nie bardzo się sprawdzi bo tekst poprzesuwa się we wszystkich komórkach.

Spróbuje użyć tej innej funkcji zamiast texxtout.

A korzystam z macierzy bo zamierzałem kolorować niesymetrycznie więc nie da się tego zapisać w postaci IF, a tak sobie ustawie najprościej jak się da w macierzy true lub false.

edytowany 1x, ostatnio: elTwardy
_13th_Dragon
Przecież powiedziałem - 3 piksele. Albo użyj przed tym InflateRect(Arect,-1,-1);
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
1

przed StringGrid1.Canvas.TextOut dodaj StringGrid1.Canvas.Brush.Style := bsClear


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
_13th_Dragon
Wtedy źle będzie wyglądać tekst.
abrakadaber
abrakadaber
a niby dlaczego?
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0
abrakadaber napisał(a):

a niby dlaczego?

eadf2145e2.png
Zgadnij z dwóch raz które zrobione z bsClear.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
_13th_Dragon
Oczywiście przy jasnym tle nie będzie to aż tak wyraźnie widoczne, ale niektórzy ludzi mają dobry wzrok.
MI
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 9 lat
0

zamiast

Kopiuj
Rectangle(ARect);

daj

Kopiuj
FillRect(ARect);

wtedy nie będzie dodatkowych pogrubionych linii.

edytowany 1x, ostatnio: misiakufal
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
0

no popatrz a mi całkiem coś innego wyszło...
kod:

Kopiuj
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    img1: TImage;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
  with img1.Canvas do
  begin
    Brush.Style := bsSolid;
    Brush.Color := clRed;
    FillRect(img1.ClientRect);
    Font.Color := clBlack;TextOut(2, 10, 'Test');
    Brush.Style := bsClear;
    Font.Color := clBlack;TextOut(2, 30, 'Test');
  end;
end;

end.

user image

A tu masz Microsoft Sans Serif rozmiar 20

user image

Kopiuj
    Font.Size := 20;
    Font.Name := 'Times New Roman';
    Font.Color := clBlack;TextOut(2, 10, 'Test');
    Brush.Style := bsClear;
    Font.Color := clBlack;TextOut(2, 35, 'Test');

user image


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 3x, ostatnio: abrakadaber
Zobacz pozostałe 5 komentarzy
flowCRANE
Dokładnie; Choć nie wiem po co ustawiać BrushStyle, skoro przy zwykłym Brush.Color i TextOut poprawnie rysuje - z tłem i wygładzaniem; Chyba, że na nowszych systemach jest problem to rozumiem;
_13th_Dragon
Nie zawsze tło jest jednolite. W tym przypadku napis najeżdżał na ramkę rysowaną przez Rectangle i częściowo ją zamazywał, na co @abrakadaber zaproponował Brush.Style:=bsClear; (ja też myślałem że autor postu chce tej dodatkowej ramki). Ja myślałem że w tym przypadku nie działa wygładzanie (nigdy), ale okazuje się że nie działa tylko pod niektórymi windowsami.
flowCRANE
Wiem, wiem - tutaj jednak jest plus, bo jest jednolite; Jakoś to wygładzanie działa - trzeba by sprawdzić różne warianty;
_13th_Dragon
Dopóki była ramka - nie było jednolite.
flowCRANE
Było - ta ramka była niechciana, pytacz wspomniał o tym; No i z jego kodu to wynikało ;)
ET
  • Rejestracja:około 11 lat
  • Ostatnio:około 11 lat
  • Postów:9
0

OK problem rozwiązany i wyszło w miarę idealnie, musiałem tylko dodać 3 do X bo tekst w kolorowanym wierszu przesunął się do lewej krawędzi:

Kopiuj
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
const nr : array [0..22] of Boolean = (false, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false);
begin
  if nr[ARow] then begin
    StringGrid1.Canvas.Brush.Color:= $00FDECD7;
    StringGrid1.Canvas.FillRect(aRect);
    StringGrid1.Canvas.TextRect(aRect,3,0,StringGrid1.Cells[ACol,ARow]);
  end;
end; 

Nie jednak jeszcze nie jest idealnie. Pojawił się nowy problem znika mi tekst w kolejnych kolumnach ale w pierwszej kolumnie jest ok :D
Ki diabeł ?!?!

edytowany 1x, ostatnio: elTwardy
LU
@elTwardy, to ja jeszcze podpowiem (o czym zapomniałem wcześniej), że jeśli zamierzasz zmieniać rozmiar okna, albo przewijać tabelkę w poziomie, lepiej zamiast stałych marginesów X i Y dać aRect.Left + coś i aRect.Top + coś tam. Unikniesz problemu, który właśnie się pojawił.
LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
0
Kopiuj
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);

const nr : array [0..22] of Boolean = (false, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false);

begin
   if nr[ARow] then begin
    StringGrid1.Canvas.Brush.Color:= $00FDECD7;
    StringGrid1.Canvas.FillRect(aRect);
    StringGrid1.Canvas.TextRect(aRect, aRect.Left+3, aRect.Top+3, StringGrid1.Cells[aCol, aRow]);
  end;
end;       

Powinno śmigać. Efekt w załączniku

edytowany 1x, ostatnio: Luc
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Tuchów
  • Postów:12167
0

1.

elTwardy napisał(a)

Ale jest jeden wizualny problem. Jeśli koloruję w ten sposób to przesuwa mi się tekst w tych wierszach które pokolorowałem

_13th_Dragon napisał(a)
Kopiuj
StringGrid1.Canvas.TextOut(aRect.Left+3,aRect.Top+3,StringGrid1.Cells[ACol,ARow] );
Furious Programming napisał(a)
Kopiuj
StringGrid1.Canvas.TextOut(ARect.Left + 2, ARect.Top + 2, StringGrid1.Cells[ACol, ARow]);

2.

elTwardy napisał(a)

i dodatkowo pojawiają się wygryzione linie efekt nakładania się pola z tekstem na linie dzielącą komórki ale tu ta linia robi się grubsza.

Kopiuj
  if (ARow - 1) mod 4 < 2 then
  begin
    Pen.Color := clWhite; // <-
    {...}
    Pen.Color := $00FDECD7; // <-

Rozwiązania problemu @elTwardy są zawarte w pierwszych dwóch postach odpowiedzi; Trzeba tylko je przetestować zamiast kombinować, bo pytacz miał dobry kod, tyle że podawał nie do końca poprawne parametry aby rysowanie przebiegało prawidłowo, tak jak sobie tego życzył.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
ET
  • Rejestracja:około 11 lat
  • Ostatnio:około 11 lat
  • Postów:9
0
Luc napisał(a):
Kopiuj
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);

const nr : array [0..22] of Boolean = (false, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, false);

begin
   if nr[ARow] then begin
    StringGrid1.Canvas.Brush.Color:= $00FDECD7;
    StringGrid1.Canvas.FillRect(aRect);
    StringGrid1.Canvas.TextRect(aRect, aRect.Left+3, aRect.Top+3, StringGrid1.Cells[aCol, aRow]);
  end;
end;       

Powinno śmigać. Efekt w załączniku

OK, ta wersja wygląda już prawidłowo.
Dzięki za pomoc.

flowCRANE
Zaznacz więc post @Luc jako rozwiązanie i rozdaj plusiki pomocnym postom - pamiętaj o tym na przyszłość, że w ten sposób kończy się tutaj dyskusję;
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)