Autor Beitrag
ibh_compucat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 130

Win 2000, Win 8.1
D6, Ent. XE5 Ent.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 130

Win 2000, Win 8.1
D6, Ent. XE5 Ent.
BeitragVerfasst: Di 14.02.12 17:59 
habe ich auf Tahoma umgestellt.

ibh_compucat

_________________
Was du nicht begreifst, kannst du nicht verlernen!
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Di 14.02.12 18:45 
Es gibt keine russischen, sondern nur kyrillische Buchstaben.
ibh_compucat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 130

Win 2000, Win 8.1
D6, Ent. XE5 Ent.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19340
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 130

Win 2000, Win 8.1
D6, Ent. XE5 Ent.
BeitragVerfasst: 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!