AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia FreePascal Umlaute mit Windows.DrawText

Umlaute mit Windows.DrawText

Ein Thema von stiftII · begonnen am 26. Sep 2011 · letzter Beitrag vom 26. Sep 2011
Antwort Antwort
stiftII

Registriert seit: 2. Sep 2009
Ort: Cuxhaven
122 Beiträge
 
#1

Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 00:37
Hallo,

Code:
windows.DrawText(DbGrid1.Canvas.Handle, pchar('äää'),-1, @crect, DT_WORDBREAK or DT_TOP or DT_LEFT);
stellt die Umlaute falsch dar (in einem DbGrid(.canvas)).

Anstelle von Umlauten und Sonderzeichen werden nur Artefakte angezeigt.

Woran kann das liegen ?
(Kann man das Charset irgendwie verändern?)

PS: Ich Nutze die Lazarus IDE 0.9.31

grüße
stiftII
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.701 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 04:15
Kann man das Charset irgendwie verändern?
Hat DrawText einen Parameter für einen Charset?

Neee, also nicht.

Woran kann das liegen ?
Die ANSI-Version DrawTextA, auf welche bei deinem Lazarus das DrawText weitergeleitet wird, nutzt den Charset, auf welchen Windows eingestellt ist.
Also wie wäre es, wenn du die Spracheinstellungen vom Windows verstellst? (auf Deutsch vermutlich?)

Eventuell ist der String aber auch nur auf UTF-8 eingestellt?
Wenn ja, dann kodiere es nach ANSI.

Oder man nutzt ganz einfach DrawTextW und Unicode.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.056 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 06:25
windows.DrawText(DbGrid1.Canvas.Handle, pchar('äää'),-1, @crect, DT_WORDBREAK or DT_TOP or DT_LEFT); [/CODE]

stellt die Umlaute falsch dar (in einem DbGrid(.canvas)).

Anstelle von Umlauten und Sonderzeichen werden nur Artefakte angezeigt.
An deinem Freepascal/Lazarus. Das Arbeitet sehr oft mit UTF8 und wenn du hier direkt native API's aufrufen willst must du selbst wandeln in einen Ansi/Unicodestring.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
603 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 09:48
Code:
windows.DrawText(DbGrid1.Canvas.Handle, pchar('äää'),-1, @crect, DT_WORDBREAK or DT_TOP or DT_LEFT);
Erste Frage: Warum verwendest du Windows.DrawText statt DbGrid1.Canvas.TextRect ? Letzteres unterstützt nämlich auch Zeilenumbrüche, wenn du eine TTextStyle -Variable mit .WordBreak := True verwendest.

Zweite Frage (falls du tunlichst bei DrawText bleiben möchtest): Welche Kodierung hat deine Quellcodedatei? Mache dazu einen Rechtsklick im Editorfenster und navigiere zu Dateieinstellungen->Zeichenkodierung. Steht der Punkt bei UTF-8 (oder ähnlich), so kannst du entweder die Einstellung auf CP1252 ändern oder das PChar('äää') zu PChar(UTF8ToAnsi('äää')) erweitern.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 10:01
Ggf. hilft es auch den font zu wechsel, denn nicht jeder Font unterstützt alle Zeichen.
(mit Arial bist Du meist auf der sicheren Seite)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
stiftII

Registriert seit: 2. Sep 2009
Ort: Cuxhaven
122 Beiträge
 
#6

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 12:41
Zitat:
Zweite Frage (falls du tunlichst bei DrawText bleiben möchtest): Welche Kodierung hat deine Quellcodedatei? Mache dazu einen Rechtsklick im Editorfenster und navigiere zu Dateieinstellungen->Zeichenkodierung. Steht der Punkt bei UTF-8 (oder ähnlich), so kannst du entweder die Einstellung auf CP1252 ändern oder das PChar('äää') zu PChar(UTF8ToAnsi('äää')) erweitern.
Es ist UTF-8. Danke für den Hinweise mit TextRect . Es ging mir tatsächlich um die Zeilenumbrüche.

(Habe mir die DBGrid Komponente so umgeschrieben, dass sie Umbrüche vernünftig darstellt.)

Danke an euch alle =)

stiftII
  Mit Zitat antworten Zitat
stiftII

Registriert seit: 2. Sep 2009
Ort: Cuxhaven
122 Beiträge
 
#7

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 14:21
Puh, Text Rect funktioniert zwar mit den Umlauten, aber wie kann ich denn damit den Schrift-Stil und die TextGröße verändern ??

PS:
Code:
      DbGrid1.Canvas.Font.size:=55;
Funktioniert leider nicht

Geändert von stiftII (26. Sep 2011 um 14:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
603 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 14:45
Puh, Text Rect funktioniert zwar mit den Umlauten, aber wie kann ich denn damit den Schrift-Stil und die TextGröße verändern ??

PS:
Code:
      DbGrid1.Canvas.Font.size:=55;
Funktioniert leider nicht
Hmm... probier mal DbGrid1.Font , da ich glaube, dass der Font des Canvas bei jedem Zeichnen mit genau diesem Font überschrieben wird.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
stiftII

Registriert seit: 2. Sep 2009
Ort: Cuxhaven
122 Beiträge
 
#9

AW: Umlaute mit Windows.DrawText

  Alt 26. Sep 2011, 15:01
Puh, Text Rect funktioniert zwar mit den Umlauten, aber wie kann ich denn damit den Schrift-Stil und die TextGröße verändern ??

PS:
Code:
      DbGrid1.Canvas.Font.size:=55;
Funktioniert leider nicht
Hmm... probier mal DbGrid1.Font , da ich glaube, dass der Font des Canvas bei jedem Zeichnen mit genau diesem Font überschrieben wird.

Gruß,
Sven
Tut sich leider nichts.
Die Schriftfarbe kann man aber zB verändern.. nur die Größe nicht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf