Jak wspomina David, problemem jest czcionka użyta w siatce strun. Jednak nie jest dokładnie powiedzieć, że domyślną czcionką w Delphi jest MS Sans Serif. Kiedyś był MS Sans Serif, ale był changed (in Delphi 2006) to Tahoma.
Można zobaczyć, jak dana wersja Delphi wybiera domyślną czcionkę, sprawdzając źródło Graphics jednostki w źródle RTL tej konkretnej wersji Delphi (od IDE jest zbudowany przy użyciu tego kodu). W szczególności procedura InitDefFontData (i, w starszych wersjach Delphi, rekord DefFontData).
Jak z (co najmniej) Delphi XE4 domyślny Tahoma tekstu zostanie zastąpiony przez dowolne ustawienie zmianę czcionek do wartości określonej jako MS Shell Dlg 2 określoną w rejestrze:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes\
NB - od sprawdzania kodu w XE4 to możliwe że jeśli ten klucz nie istnieje lub nie można uzyskać, lub jeśli nie ma wpisu podstawienie MS Shell Dlg 2 czcionki, a następnie MS Sans Serif będzie nadal używany. Trudno powiedzieć, ponieważ jest to zachowanie, gdy zdefiniowano "CLR", co nie powinno mieć miejsca, ponieważ Delphi już nie obsługuje.NET i IDE prawdopodobnie nie są kompilowane z zdefiniowanym CLR, ale nie ma możliwości upewnienia się po prostu od sprawdzenia kodu, jakie definicje warunkowe mogą być zastosowane podczas kompilowania IDE.
Niezależnie od tego, którą czcionkę używa IDE i jak wybiera tę czcionkę, dotyczy to tylko nowych formularzy utworzonych w IDE.
Dla istniejących form, jak w tym przypadku nie chodzi o TStringGrid jako takiego, ale raczej fakt, że stworzył projekt w wersji Delphi, który stosowany domyślną czcionkę zrobił/nie obsługuje Unicode.
Akt otwarciu projektu w nowszej wersji Delphi nie zmieni czcionkę używaną w formularzu (ów), a więc forma zapisane w Delphi 7 pomocą czcionki MS Sans Serif jest nadal przy użyciu tej czcionki po otwarciu w Delphi XE5.
TStringGrid sterowania jest następnie za pomocą czcionki MS Sans Serif, ponieważ jest to czcionka ustawiona na formularzu, a domyślne dla formantów na formularzu jest użycie ich czcionki formantu nadrzędnego.
to tym konkretnym przypadku z TStringGrid stosuje MS bezszeryfowy ponieważ formy, na której jest umieszczony (jeszcze) stosując MS bezszeryfowy. W takich przypadkach należy zmienić czcionkę formularza na Tahoma lub n. inna odpowiednia czcionka z obsługą Unicode.
Wszystkie elementy sterujące w formularzu, w których nadal jest używana czcionka nadrzędna, również przyjmą tę czcionkę. Podczas wykonywania tej czynności w konkretnej aplikacji możesz znaleźć kilka elementów sterujących przy ustawieniu FALSE dla ParentFont, które będą wymagać indywidualnego adresowania, a nawet jeśli ustawienia czcionek są "dziedziczone", projekty formularzy mogą wymagać dalszej pracy, aby uporządkować rzeczy z powodu zmian w wyglądzie wynikające ze zmiany czcionki.
Zauważ, że nawet ta zmiana Tahoma został wyprzedzony przez zmiany w samym systemie Windows, a jeśli chcesz zastosować jakąś inną domyślną czcionkę (w nowych formach/projektów) można znaleźć useful information here.
Doh ... Dziękuję bardzo, nie mogę głosować na odpowiedź teraz (brak reputacji), ale robię to w przyszłości. Z poważaniem. – Nihila
Czy problem polegał na 'TStringGrid'? –
@ FreeConsulting Tak, to 'TStringGrid', który wydaje się być tutaj wadliwy. Prawdopodobnie jakiś kiepski kod malarski. –