| Autor |
Beitrag |
ibh_compucat
      
Beiträge: 130
Win 2000, Win 8.1
D6, Ent. XE5 Ent.
|
Verfasst: Di 14.02.12 17:35
Hallo Leidensgenossen,
ich habe ein Programm, daß nun auf russisch erweitert werden soll (russische Maske, russischer Druck). Das interne Problem mit Labels, Edits usw habe ich mit den Tnt Komponenten gelöst. Läuft prima.
Nun soll auch das Protokoll in russisch ausgedruckt werden. Dazu habe ich die internen Variablen auf widestring verbreitert,
und es werden auch russische Zeichen an den Canvas übergeben. Aber der druckt nur ??????.
Gibt es auch sowas wie TntLabel für Labels, also TntCanvas.... ?
Ich habe auch versucht, in einen PDF Creator zu drucken, da kommen ebenfalls nur ?????.
Kann mir jemand helfen? Ich arbeite mit D6 Ent.
Gruß ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Di 14.02.12 17:56
Ich vermute mal, dass die Schriftart die zum Druck verwendet wird, mit den kyrillischen Schriftzeichen nicht zurecht kommt.
|
|
ibh_compucat 
      
Beiträge: 130
Win 2000, Win 8.1
D6, Ent. XE5 Ent.
|
Verfasst: Di 14.02.12 17:59
habe ich auf Tahoma umgestellt.
ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Di 14.02.12 18:45
Es gibt keine russischen, sondern nur kyrillische Buchstaben.
|
|
ibh_compucat 
      
Beiträge: 130
Win 2000, Win 8.1
D6, Ent. XE5 Ent.
|
Verfasst: Di 14.02.12 18:59
ja, es gibt ja mehrere kyrillische Alphabete. Mit dem Begriff "russisch" wollte ich deutlich machen, daß ich das in Russland gebräuchlichste (kyrillische) Alphabet meine.
Aber ich wollte das Problem nicht unnötig "verästeln".
Danke für den Hinweis.
ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 14.02.12 19:02
Verwende keine Canvas-Funktionen, sondern gib die Daten direkt mit der API auf den HDC des Druckers aus. Wenn überhaupt, geht es so. Natürlich nur, wenn du explizit die DrawTextW usw. nimmst, also immer die Unicodevarianten.
Und eine aktuelle Delphiversion, bei der das alles ohnehin schon geht, wäre natürlich auch eine Möglichkeit. Immerhin kannst du jetzt bis nächsten Monat von Delphi 6 zum Upgradepreis auf XE2 upgraden. 
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 14.02.12 22:39
Ich hab grade mal in den alten Delphi7-Code meines Players geguckt. Da nutze ich eine Funktion WideCanvastextOut(aCanvas, ...), die wohl in der Unit TNTGraphics.pas definiert ist. Wenn du die TNTs eh benutzt, sollte das weiterhelfen. 
_________________ We are, we were and will not be.
|
|
rushifell
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: Mi 15.02.12 00:10
| Gausi hat folgendes geschrieben: | | Da nutze ich eine Funktion WideCanvastextOut(aCanvas, ...), die wohl in der Unit TNTGraphics.pas definiert ist. |
Diese Procedure nutzt ExtTextOutW, das leider nicht viel taugt. Arabischer Text z.B. wird nicht immer von rechts nach links dargestellt. Ich nutze stattdessen DrawTextW mit dem ich bisher keine Probleme hatte (wie auch von jaenicke empfohlen). TntLabel nutzt ürigens auch letzteres.
|
|
ibh_compucat 
      
Beiträge: 130
Win 2000, Win 8.1
D6, Ent. XE5 Ent.
|
Verfasst: Mi 15.02.12 11:32
Ein ganz großes Dankeschön an alle.
Das war die Lösung, es funktioniert prima mit WideCanvastextOut.
Nocheinmal vielen, vielen Dank.
Schöne Grüße
ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|
|