Kilka czcionek w RichEdit

0

Delphi Tokyo
Nie działa mi zmiana czcionki w kodzie w części tekstu w richEdit
Część chcę mieć jako "Times New Roman" a część jako "Symbol".
Są też problemy z wpisywaniem znaków unicode bezpośrednio do pliku źródłowego.

1

Co takiego jest w czcionce Symbol czego by nie było w Times New Roman?
Albo w takim Cambria Math...

Symbol to pozostałość po nieunikodowych Windowsach, hack niezgodny nie tylko z Unicode ale nawet z ASCII.
Raczej unikaj w nowych programach.

0

@MariuszJ: jeśli potrzebujesz różnych fajnych znaczków, to skorzystaj z unikodego fontu, a odpowiednie symbole poszukaj sobie w jakiejś tablicy znaków – systemowej lub którejś z internetowych.

0

Podobno TRichEdit nie obsługuje znaków unicode i trzeba użyć innych komponentów, na przykład
https://delphi-sucks.com/2018/01/20/make-richedit-unicode-aware/

Czy Delphi może wyświetlić mi na liście fonts czcionki tylko unikode? Też nie da się użyć funkcji char, zamiast tego używać stałej na przykład #1111

Planuję zrobić rozwiązanie zagadki
http://www.chessandpoker.com/peg-solitaire-solution.html
i do tego potrzebne mi są do wyświetlenia rozwiązania znaki w postaci dużej kropki ze strzałką w czterech kierunkach. Chyba nie ma takiej, będę musiał użyć czegoś zastępczego albo zmienię kolor. Na tej stronie nie podają opisu rozwiązania od strony informatycznej. Używają strategii odkrytej dla każdej gry. Ja nie będę tego używał tylko zrobię zwykłe przeszukiwanie grafu wszerz. Dla peg solitaire diamont shape powinno zmieścić się w pamięci.

Poza tym taka uwaga, że od kilkunastu lat zapanowała moda na jezyk C, nie wiem dlaczego, bo ma nieczytelną składnię, i łatwo zrobić błąd. Wcześniej wszystkie podręczniki podawały listingi w języku Pascal, który odpowiada Delphi. Ale jednak są ludzie którzy lubią Delphi, to miłe.

0

Nie spotkałem się z takim problemem – nie sądziłem, że taki istnieje. :/

Koniecznie chcesz użyć standardowego komponentu? Jest trochę tych niestandardowych.

1
MariuszJ napisał(a):

Podobno TRichEdit nie obsługuje znaków unicode i trzeba użyć innych komponentów, na przykład
https://delphi-sucks.com/2018/01/20/make-richedit-unicode-aware/

Hmmm tak sobie prze4gladam źródło VCL (z Tokyo) i jak byk jest fragment kodu:

{$IF NOT DEFINED(UNICODE)}
  RichEditClassName = 'RICHEDIT20A';
{$ELSE}
  RichEditClassName = 'RICHEDIT20W';
{$ENDIF}

Z tego jasno wynika, że Delphi wprawdzie używa starej wersji RichEdit ale już z obsługą Unicode (w RichEdit 2.0 jest obsługa Unicode)
https://msdn.microsoft.com/en-us/library/windows/desktop/bb787873(v=vs.85).aspx#_win32_Rich_Edit_Version_2.0

1

Można i stosować RICHEDIT50W (w CreateWindowHandle) - tak robiłem w sofcie z 2012 r.
Ale najprościej to użyć https://www.tmssoftware.com/site/tmsuni.asp
Tylko że aktualnie to już powinno obsługiwać Unicode chyba??

0

Porównując richEdit z komponentami producentów niezależnych używających unicode, daje się zauważyć, że obsługuje on jedną dziesiątą znaków unicode. Tego co jest poniżej, nie dałoby się wyświetlić. Zmieniłem więc komponent richEdit na unicodeRichEdit, mam czcionki jakie potrzebuję, ale w tym momencie ustawienia czcionki na monospaced jak 'Courier New' przestało być dostrzegalne, czcionki mają zmienną szerokość i trzeba je dobierać żeby były jednakowej szerokości. Poniżej udało mi się zebrać specjalnie metodą prób i błędów czcionki o jednakowej szerokości. Gdybym ich nie dobrał, każda linia miałaby różną długość i czcionki nie byłyby w linii w kolumnie. Żeby uniknąć tego problemu, trzeba stosować inny rodzaj wyświetlania, bardzo skomplikowany i cała prostota unicodeRichEdit zostałaby stracona.


☒ ☒ ☒ ☒ ⏺ ☒ ☒ ☒ ☒ 
☒ ☒ ☒ ◎ ⏺ ⏺ ☒ ☒ ☒ 
☒ ☒ ⏺ ⏺ ⏺ ⏺ ⏺ ☒ ☒ 
☒ ⏺ ⏺ ⏺ ⏺ ⏺ ⏺ ⏺ ☒ 
⏺ ⏺ ⏺ ⏺ ⏺ ⏺ ⏺ ⏺ ⏺ 
☒ ⏺ ⏺ ⏺ ⏺ ⏺ ⏺ ⏺ ☒ 
☒ ☒ ⏺ ⏺ ⏺ ⏺ ⏺ ☒ ☒ 
☒ ☒ ☒ ⏺ ⏺ ⏺ ☒ ☒ ☒ 
☒ ☒ ☒ ☒ ⏺ ☒ ☒ ☒ ☒ 
0

@MariuszJ: a sprawdzałeś użycie fontu monospace, zawierającego pełen zestaw znaków unikodowych? Bo z tego co rozumiem, testowane fonty albo nie zawierały wymaganych znaków, albo nie były o stałej szerokości znaków.

0

Sprawdzałem czcionkę unicode monospace. Jak się nie dobierze jednakowej szerokości znaki, to linia ma różną długość. Podobno tak jest z czcionkami unicode. Ponieważ potrzebuję tylko tych znaków wyświetlonych w tabelce, więc po godzinie szukania udało mi się je dobrać. Wyniki działania programu opublikuję jako plik rtf bo na stronie znowu mogą się zniekształcić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1