Podświetlenie niektórych wierszy na czerwono w StringGrid

Podświetlenie niektórych wierszy na czerwono w StringGrid
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

Witam
Mam taki kodzik i moje pytanie jest jak zrobić aby w StringGrid gdy wartość kolumny 4 jest < od 50 podświetlić wiersze na czerwono

Kopiuj
procedure TForm4.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (Acol mod 4 <=5 ) and (Arow  <=5)   then
    with TStringGrid(Sender) do
    begin
      //paint the background Green
      Canvas.font.Color := clRed;
          Canvas.FillRect(Rect);
      Canvas.TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol, ARow])  ;

      end;
edytowany 1x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12163
0

A kazałeś komponentowi wykorzystać Twoje zdarzenie malowania komórek?

Jeśli nie, to odznacz właściwość DefaultDrawing – wtedy komponent będzie używał Twojego zdarzenia i malował komórki w taki sposób, w jaki zechcesz aby to robił.


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.
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

Nie dzięki a jak zdefiniować żeby 4 kolumnę gdy wartość < 50 ? szukam ale jakoś nie mogę nic znaleźć jak to zrobić.

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Nie cytuj całych postów, jeśli piszesz zaraz pod nimi i do ich całości się odnosisz.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12163
0

Nie dzięki […]

Nie rozumiem – czy Twoje zdarzenie OnDrawCell jest wywoływane, czy nie jest?

[…] a jak zdefiniować żeby 4 kolumnę gdy wartość < 50 ? szukam ale jakoś nie mogę nic znaleźć jak to zrobić.

Przekonwertuj ciąg z komórki na liczbę i porównaj – wykorzystaj StrToInt lub TryStrToInt.


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 1x, ostatnio: flowCRANE
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

Mam SQLQuery powiązane ze StringGridem i chcę zrobić tak aby mi podświetlał na czerwono gdy wartość będzie poniżej 50 w danej kolumnie.

edytowany 1x, ostatnio: flowCRANE
GS
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 6 godzin
1

@Molnas
@furious programming podał sposób w jaki zmusić stringgrida do malowania przy pomocy Twojego kodu. Ale Twój kod, jeśli nawet zadziała, to nic nie narysuje w sytuacji kiedy warunek nie będzie spełniony i w stringgridzie będziesz miał puste pola.
Aby to zrobić porządnie to masz dwa rozwiązania
a. zapamiętać wskaźnik do domyślnej metody rysowania grida i użyć swojej metody jesli warunek jest spełniony,a w przeciwnym razie użyć standardowej i zapamiętanej metody
b. obsłużyć w kodzie oba warianty rysowania komórki

edytowany 2x, ostatnio: grzegorz_so
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

Wielkie dzięki

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12163
0

W Lazarusie mogę zrobić tak, że DefaultDrawing zostawiam na True, a w zdarzeniu OnDrawCell definiuję malowanie wybranych komórek – pozostałe będą malowane automatycznie, bo tak wynika to z budowy komponentu. Jeśli zmienię DefaultDrawing na False to muszę obsłużyć malowanie każdej komórki i dla każdego przypadku – w przeciwnym razie nic nie zostanie namalowane.

@grzegorz_so: czy w Delphi działa to tak samo?


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.
GS
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 6 godzin
0

nie jestem pewien
mam aplikację która w stringridzie wyświetla (rysuje) różne rzeczy, ale z tego co pamiętam to moja metoda rysowania obsługuje rysowanie od początku do końca.
muszę spojrzeć w kod apki

edytowany 1x, ostatnio: grzegorz_so
flowCRANE
Jakbyś miał chwilkę to sprawdź, bom ciekaw. ;)
GS
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 6 godzin
0

sprawdziłem, grid jest tworzony dynamicznie, czyli z kodu i "defaultdrawing" ma ustawione na "false" , więc chyba nie wyjaśnię Twoich wątpliwości. Ale mogę zbudować testową apke i sprawdzić jak działa rysowanie.
Być może StringGrid najpierw sam rysuje komórkę a w drugiej kolejności wywołuje OnDrawCell o ile ta nie jest "nil", czyli zawsze coś się "narysuje".
Niektóre kontrolki, np te dziedziczące z TDBgrid mają metodę "DefaultDrawDataCell", której używam w sytuacji kiedy nie chcę aby mój kod sam coś rysował

edytowany 2x, ostatnio: grzegorz_so
flowCRANE
Już nieważne – po kodzie podanym przez @kAzek widzę, że zdarzenie mimo wszystko będzie wywoływane. Tak więc nie trzeba zmieniać DefaultDrawing.
GS
zrobiłem parę testów, wynika z nich że metoda podpięta pod OnDrawCell wykonuje się zawsze, a domyślne rysowanie tylko wtedy jeśli "defaultdrawing" jest "true"
flowCRANE
Nie musiałeś robić testów – wystarczyło zajrzeć w źródła. Ale Ok, dzięki. :]
KA
  • Rejestracja:ponad 19 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
0

Co rozumiesz przez podświetlić... bo ja mam wrażenie ze chodzi nie o podświetlenie na o wypisanie wartości czerwoną czcionką wystarczy.

Kopiuj
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Value: Integer;
begin
  if ACol = 4 then //albo 3 nie wiem co rozumiesz przez kolumne 4 index (od zera) czy rzeczywiscie 4
  begin
    Value:= StrToIntDef(TStringGrid(Sender).Cells[ACol, ARow], 0);
    if Value < 50 then
    begin
      TStringGrid(Sender).Canvas.Font.Color:= clRed;
      TStringGrid(Sender).Canvas.TextOut(Rect.Left+2,Rect.Top+2, TStringGrid(Sender).Cells[ACol, ARow]);
    end;
  end;
end;

Oczywiście nie należy ruszać właściwości DefaultDrawing która domyślnie jest na True i tak ma być.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
GS
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 6 godzin
0

@kAzek:

Oczywiście nie należy ruszać właściwości DefaultDrawing która domyślnie jest na True i tak ma być.

myślę że nie masz racji. "DefaultDrawing=true" sprawia że zawsze wykona się domyślne rysowanie stringgrida które może nałożyć się na rysowanie podpięte pod "OnDrwaCell". A jeśli chcemy aby za rysowanie był odpowiedzialny tylko i wyłącznie kod użytkownika to "DefaultDrawing" musi być "false"

edytowany 1x, ostatnio: grzegorz_so
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12163
0

@grzegorz_so: i tak i nie – jeśli właściwość ta jest zapalona, komponent dla każdej komórki wywołuje wewnętrzną metodę malującą komórki zgodnie ze schematem systemowym. Jeśli nie jest zapalona to jej nie wywołuje. Zdarzenie OnDrawCell wywoływane jest po tym wewnętrznym, więc komórki nie spełaniające warunku pytacza, zostaną pomalowane raz, a te spełniające warunek – dwa razy (raz domyślnie i raz według zdarzenia).

Biorąc pod uwagę post @kAzek, wewnętrzny mechanizm wygląda mniej więcej tak:

Kopiuj
if FDefaultDrawing then
  DrawDefault({...});
  
if Assigned(FOnDrawCell) then
  FOnDrawCell({...});

Jeśli odznaczy się DefaultDrawing to w zdarzeniu OnDrawCell trzeba będzie malować każdą komórkę – w przeciwnym razie komórki będą posiadać jakąś niezdefiniowaną zawartość (przypadkowe tło). Pozostawienie DefaultDrawing włączonego pozwoli na własnoręczne malowanie tylko niektórych komórek, a pozostałe malowane będą w stylu domyślnym.

Natomiast sam fakt dwukrotnego przemalowania komórki w niektórych przypadkach raczej nie stanowi problemu.


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
GS
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 6 godzin
0

@furious programming:
czyli się zgadzamy że właściwości DefaultDrawing w zależności od sytuacji i wymagań może być albo true albo false

mój ostatni post nawiązywał do postu @kAzek

Oczywiście nie należy ruszać właściwości DefaultDrawing która domyślnie jest na True i tak ma być.

KA
  • Rejestracja:ponad 19 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
0

@grzegorz_so myślę, że DefaultDrawing ustawia się na False w przypadkach gdy chcemy sami malować wszystko, wtedy rzeczywiście zbędne jest domyślne malowanie a później tego przemalowywanie po swojemu ale w przypadku jednej kolumy (a właściwie tylko niektórych jej wierszy) takie rozwiązanie wydaje mi się lepsze niż malowanie po swojemu wszystkiego jeżeli domyślnie malowana reszta nam odpowiada.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
GS
"że DefaultDrawing ustawia się na False w przypadkach gdy chcemy sami malować wszystko" , dokładnie to mam na myśli
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12163
1

Podsumowując, z moich obserwacji wygląda to tak:

DefaultDrawingOnDrawCellprzemalowańopis
Truenil1malowanie w stylu systemowym (domyślne)
Truezdefiniowane2malowanie w stylu systemowym, a następnie według zdarzenia
Falsezdefiniowane1malowanie tylko według zdarzenia
Falsenil0wizualne UB

Czyli w zależności od potrzeb, można wyłączyć lub pozostawić włączoną właściwość DefaultDrawing.

Wiem jak to wygląda w Lazarusie – to opisuje powyższa tabelka. Zachowanie kontrolki w LCL powinno być zgodne z odpowiednikiem z VCL, ale nie mam dostępu do źródeł VCL, więc sam nie sprawdzę.


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 5x, ostatnio: flowCRANE
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0
kAzek napisał(a):

Co rozumiesz przez podświetlić... bo ja mam wrażenie ze chodzi nie o podświetlenie na o wypisanie wartości czerwoną czcionką wystarczy.

Kopiuj
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Value: Integer;
begin
  if ACol = 4 then //albo 3 nie wiem co rozumiesz przez kolumne 4 index (od zera) czy rzeczywiscie 4
  begin
    Value:= StrToIntDef(TStringGrid(Sender).Cells[ACol, ARow], 0);
    if Value < 50 then
    begin
      TStringGrid(Sender).Canvas.Font.Color:= clRed;
      TStringGrid(Sender).Canvas.TextOut(Rect.Left+2,Rect.Top+2, TStringGrid(Sender).Cells[ACol, ARow]);
    end;
  end;
end;

Oczywiście nie należy ruszać właściwości DefaultDrawing która domyślnie jest na True i tak ma być.

No tak o to chodzi aby wartości w 4 kolumnie które są mniejsze od 50 były na czerwono.
jak w excel kolumna d

Działa tylko wyświetla czerwony tekst na czarnym. tak jak by dwa były nałożone na siebie. jak wyłączę default.. nie wyświetla pozostałych kolumn.

edytowany 2x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12163
0
Molnas napisał(a):

Działa tylko wyświetla czerwony tekst na czarnym. tak jak by dwa były nałożone na siebie.

Maluj całą komórkę, a nie tylko sam tekst. Dzięki temu przykryjesz wszystko co domyślna metoda namaluje.

jak wyłączę default.. nie wyświetla pozostałych kolumn.

Nie maluje ich, bo w swoim zdarzeniu nie masz tego oprogramowanego. Jeśli wyłączysz DefaultDrawing, to musisz zadbać o to, aby wszystkie komórki były malowane w zdarzeniu OnDrawCell, nie tylko te wybrane.


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 2x, ostatnio: flowCRANE
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

Może coś nie do końca doprecyzowałem chcę uzyskać jak w excelu formatowanie warunkowe tak aby wartość doprecyzowując z kolumny 3 była innego coloru wtedy gdy jest mniejsza od np. 30 pozostałe > mają być w kolorze standardowym.

cos jak to:

edytowany 2x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12163
2

Podam przykład działający w Lazarusie:

Kopiuj
procedure TForm1.StringGrid1DrawCell(ASender: TObject; ACol, ARow: Integer; ARect: TRect; AState: TGridDrawState);
var
  LGrid: TStringGrid absolute ASender;
begin
  if ACol = 3 then
    LGrid.Canvas.Font.Color := clRed;

  LGrid.DefaultDrawCell(ACol, ARow, ARect, AState);
end;

Prosty kod – jeśli w numer kolumny jest równy 3 to tekst w komórce malowany jest na czerwono, w przeciwnym razie na czarno (kolor domyślny, według bieżącej kompozycji wizualnej systemu). Efekt działania takiego kodu na poniższym zrzucie:

grid.png

Spróbuj w ten sam sposób zapisać kod u siebie, tyle że ze swoim warunkiem.


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
KA
  • Rejestracja:ponad 19 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
2

Rzeczywiście mój poprzedni kod działał tylko w starym Delphi 7 a nowym są pozostałości po domyślnym malowaniu tekstu. Sposób zaprezentowany przez @furious programming jest dobry ale ponieważ w Delphi nie ma ma metody DefaultDrawCell (przynajmniej publicznej dla VCL, dla FMX jest) więc trzeba bardziej na piechotę gdyby ktoś potrzebował to:

Kopiuj
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Value: Integer;
  s: String;
  Grid: TStringGrid absolute Sender;
begin
  if (ACol = 4) and (ARow >= TStringGrid(Sender).FixedRows) then
  begin
    s:= Grid.Cells[ACol, ARow];
    Value:= StrToIntDef(s, 0);
    if Value < 50 then
    begin
      Grid.Canvas.Brush.Color := Grid.Color; //albo na sztywno ustawic np. domyslny clWindow;
      Grid.Canvas.FillRect(Rect);
      Grid.Canvas.Font.Color:= clRed;
      InflateRect(Rect, -2, -2);
      Grid.Canvas.TextRect(Rect,  s, [tfLeft, tfSingleLine, tfVerticalCenter]);
    end;
  end;
end;

1.png

  • 1.png (19 KB) - ściągnięć: 98

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 2x, ostatnio: kAzek
flowCRANE
W Delphi też może być taka metoda, tyle że pod inną nazwą. Ja swoją znalazłem w klasie TCustomDrawGrid i jest to jedyna publiczna tego typu – pozostałe są w sekcji protected.
KA
@furious programming Miałem chwilę i sprawdziłem ale niestety w Delphi do domyślnego malowania wywoływana jest procedura DrawCells z modułu Vcl.Grids, w ogóle nie należy ona do żadnej klasy i pozostaje poza zasięgiem (nie ma deklaracji wyprzedzającej). Wprawdzie jest też w protected DrawCell którą można by w wywołać gdyby nie to że oprócz malowania wywołuje ona zdarzenie OnDrawCell (niezależnie od DefaultDrawing) a więc malowanie się zapętla co oczywiście skutkuje wyjątkiem stack overflow.
flowCRANE
Czyli mamy kolejną rozbieżność LCL i VCL. Myślę, że w LCL dodali metodę DefaultDrawCell właśnie po to, aby można było w niewielkim stopniu wpływać na malowanie komórek, ale jednocześnie móc malować je w stylu domyślnym.
KA
Mam wrażenie, że LCL jako nowsze jest bardziej przemyślne i nikomu się nie chce przepisywać na nowo kodu VCL co najwyżej poprawiają babole. W Delphi ale FMX ta metoda bez problemu jest dostępna.
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

Kurcze a mi tak nie działa lepsze niż ostatnie ale wciąż if value ... wstawię co kolwiek i tak zaznacza całą kolumnę. Zastanawiam się czy problem nie jest w tym że dane pochodzą z sqlquery

edytowany 1x, ostatnio: flowCRANE
KA
  • Rejestracja:ponad 19 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
0

To nie ma nic do tego skąd pochodzą dane. Może warunki nie takie if (ACol = 4) to 5 kolumna jak widać na screenie a to if Value < 50 then dla wartości w komórkach mniejszych niż 50. Zawsze możesz użyć debugera i sprawdzić co się dzieje.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

A u mnie wychodzi jak w załączniku

KA
  • Rejestracja:ponad 19 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
2

No i mamy jasność nie widzisz że bruździ Ci znak % w takim przypadku Value:= StrToIntDef(s, 0); zawsze zwróci 0 trzeba się go pozbyć. Jednym ze sposobów jest zmiana go na pusty ciąg Value:= StrToIntDef(StringReplace(s, '%', '', []), 0);


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

Ok to pewnie jak mam wynik z wartościami po przecinku będzie to samo :)

I działa pięknie wielkie dzięki za pomoc. Wiele nauki mam jeszcze przed sobą

edytowany 2x, ostatnio: flowCRANE
KA
  • Rejestracja:ponad 19 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
1

Jeżeli może być wartość ułamkowa to sprawa się trochę bardziej komplikuje:

Kopiuj
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Value: Real;
  s: String;
  Grid: TStringGrid absolute Sender;
  fs: TFormatSettings;
begin
  if (ACol = 4) and (ARow >= TStringGrid(Sender).FixedRows) then
  begin
    s:= Grid.Cells[ACol, ARow];
    fs:= TFormatSettings.Create; //z systemu zostanie separator dziesietny, bo w zaleznosci od ustawien moze to być , (przecinek)  lub . (kropka)
    //mozna też na sztywno ustawic ale tylko jezeli przecinek w warosciach też na sztywno
    //fs.DecimalSeparator:= ',';
    Value:= StrToFloatDef(StringReplace(s, '%', '', []), 0, fs);
    if CompareValue(Value, 50) = -1 then //do uses System.Math
    begin
      Grid.Canvas.Brush.Color := Grid.Color; //albo na sztywno ustawic np. domyslny clWindow;
      Grid.Canvas.FillRect(Rect);
      Grid.Canvas.Font.Color:= clRed;
      InflateRect(Rect, -2, 0); //margines tekstu
      Grid.Canvas.TextRect(Rect,  s, [tfLeft, tfSingleLine, tfVerticalCenter]);
    end;
  end;
end;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:25
0

dzięki ja sobie dla ułatwienia zaokrągliłem w Query wynik .

edytowany 1x, ostatnio: flowCRANE
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)