[Console] Cos a'la listbox i maskedit

[Console] Cos a'la listbox i maskedit
XT
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 8 lat
0

Oczywiście wim, że czegoś takiego domyślnie nie ma... Mam wprawdzie bibliotekę crt32, ale tam funkcji wyświetlającej copś takiego też nie ma...

Ale po kolei... chodzi o to, żeby w CosoleApp wyświetli coś a'la listbox, umożliwiającej wyświetlenie listy w postaci tablicy stringów i przeskakiwanie i wybór konkretnych przez kursury i ENTER. ponadto chodzi o to wyświoetlenie czegoś w stylu maskedita (zczytujacego treśc wpisywaną jak read/readln, ale wyświetlającego jakiś określony znak n razy, lub nie wyświetlającego nic).

Crt32 ma podstawowe funkcje i procedury z modułu crt dla Pascala... Czy:

  1. jest komponent automatyzujący wykonanie tego, o co mi chodzi?
    lub
  2. jak można napisac funkcję, która to wykona?

Z góry dziękuję za odpowiedź.


Jak cos zlego, to nie ja.
Adam.Pilorz
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 14 lat
  • Postów:2998
0
  1. Odnośnie gotowych funkcji/procek/obiektów Nie znam. (komponent - nie sądzę :P)
  2. Czy przez tego listboxa rozumiesz takie jakby menu, że sobie jeździsz strzałkami i enterem wybierasz, czy coś bardziej w stylu listy, że możesz zaznaczać, odznaczać itp? Czy przez MaskEdit rozumiesz po prostu miejsce do wpisywania, przy czym zamiast literek pojawiałyby się znaczki w stylu * czy #? Bo jak tak, to jest to zwykły edit, maskedit służy do wprowadzania danych według jakiegoś wzorca.

// to odpal edit w trybie tekstowym, ciekaw jestem jak będzie wyglądać - Ł
//Ale nie o to mi chodziło - po prostu nie trzeba MaskEdit do wpisywania powiedzmy hasła czy czegoś. To, że w trybie tekstowym to wiem, tylko kwestia upewnienia się, jaki jest problem. - AP


Grunt to uziemienie...
XT
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 8 lat
0

Czy przez tego listboxa rozumiesz takie jakby menu, że sobie jeździsz strzałkami i enterem wybierasz
-- dokładnie tak

Czy przez MaskEdit rozumiesz po prostu miejsce do wpisywania, przy czym zamiast literek pojawiałyby się znaczki w stylu * czy #? Bo jak tak, to jest to zwykły edit, maskedit służy do wprowadzania danych według jakiegoś wzorca.
--Racja... jak to czasem człowiek z pośpiechu gafe walnie... [wstyd] Sorx...

Własnie na rozwiązaniu tych problemów w ConsoleApp mi zależy... thx.


Jak cos zlego, to nie ja.
Adam.Pilorz
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 14 lat
  • Postów:2998
0
  1. Pisałem kiedyś coś podobnego (oczywiście w prostszej formie ze względów technicznych) dla Turbo Pascala. Odgrzebać raczej nie da rady (kiedy to było :D), ale mogę spróbować taki zarys tego dać. Może nie działać, zapewne trzeba będzie dopracować, ale mam nadzieję, że pomoże:
Kopiuj
function Menu(Options: TStringList): Integer;
//W parametrze podajesz opcje do wyboru, dostajesz numer wybranej opcji
var
  R: Integer; //Aktualnie wybrana opcja
  I: Integer; //Zmienna pomocnicza, indeks pętli
  X, Y: Integer; //Pozycja lewego górnego rogu menu;
  Width: Integer; //Szerokość belki - coby ładnie wyglądało
  Ch: Byte; //Wciśnięty klawisz
begin
  X:=GetX; //Być może trzeba zastąpić GetXPos albo czymś takim, z głowy piszę
  Y:=GetY; //J.w.
  Width:=0;
  For I:=0 to Options.Count-1 do if(Length(Options[I])>Width) then Width:=Length(Options[I]);
  For I:=0 to Options.Count-1 do while(Length(Options[I])<Width) do Options[I]:=Options[I]+' ';
  R:=0;
  Repeat
    For I:=0 to Options.Count-1 do begin //Wyswietlamy
      If I<>R then TextBackground(Black) //Tak to się robiło? :D
      else TextBackground(Blue); //Przykładowe kolory tła - Black zwykłe, Blue belka
      GotoXY(X, Y+I);
      Write(Options[I]);
      end;
    repeat until KeyPressed;
    while KeyPressed do Ch:=GetKey; //Tutaj też nie mam pewności co do nazwy funkcji GetKey
    if Ch=80 then R:=R+1;
    if Ch=75 then R:=R-1;
    if R=Options.Count then R:=R-1;
    if R=-1 then R:=0;
    until Ch=13; //Aż do entera
  Result:=R;
  end;

Chyba tyle :)
I sprawdź, czy GetKey zwraca Byte, czy Char, jak Char, to daj ord(GetKey) zamiast GetKey. No i nie każ mi z pamięci pisać, jakie numery ASCII mają strzałki :P
Oczywiście funkcja będzie sięwykładać trochę na ilości większej niż 25 (wysokość konsoli), no ale to trzeba dopracować :)

  1. W sumie na podobnej zasadzie by się dało. Tylko trochę prościej:
Kopiuj
function HiddenEdit: String;
var
  R: String; //Aktualnie wpisany tekst
  I: Integer; //Zmienna pomocnicza, indeks pętli
  X, Y: Integer; //Pozycja lewego górnego rogu "edita"
  Ch: Byte; //Wciśnięty klawisz
begin
  X:=GetX; //Być może trzeba zastąpić GetXPos albo czymś takim, z głowy piszę
  Y:=GetY; //J.w.
  Width:=0;
  R:='';
  Repeat
    GotoXY(X, Y);
    For I:=0 to Length(R)-1 do begin //Wyswietlamy
      Write('*'); //Tutaj możesz wstawić jaki tam znaczek sobie tylko wymarzysz
      end;
    Write(' '); //Tak żeby na wypadek skasowania to puste miejsce usunąć :)
    repeat until KeyPressed;
    while KeyPressed do Ch:=GetKey; //Tutaj też nie mam pewności co do nazwy funkcji GetKey
    if (Ch=8) and (Length(R)>0) then Delete(R, Length(R), 1) //Zdaje się 8 to jest BackSpace :)
    else R:=R+chr(Ch); //Tutaj by trzeba zabezpieczyć przed znakami specjalnymi...
    until Ch=13; //Aż do entera
  Result:=R;
  end;

Powinno działać po analogicznych ewentualnych modyfikacjach co w powyższym kodzie :)


Grunt to uziemienie...
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)