Autor Beitrag
Pittus
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 05.03.03 15:36 
Meine Anwendung soll die Sprache zur Laufzeit umstellen können. Um russische Texte anzeigen zu können, muss dafür auf einen kyrillischen Font umgeschalten werden. Wir erledigen das mit einem speziellen TrueType Font. Das ist weiter kein Problem, wenn man von den Fenstertiteln absieht.

Wie kann ich zur Laufzeit den Font des Titels eines Formulars (TForm) ändern, ohne den Systemfont im allgemeinen zu ändern? Das eingesetzte Windows ist in englischer Version.

Oder muss ich eventuell auf den Desktop zeichnen, um den eingeblendeten Titel zu überschreiben? (erste Versuche hierzu waren nur wenig erbaulich!)

Vielen Dank im Voraus
Pittus
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 05.03.03 22:32 
Titel: Re
IMHO geht das ohne zusätzliche Komponenten nur via Systemänderung der dortigen Fonts, was du ja nicht willst.
Ich hab mal ne Kompo gefunden, in der man auch den Font des Caption ändern kann; ich glaub es waren die vom LMD-Tools, werden ja mit D. ausgeliefert. ***Grübel****

mfg
MSCH
Pittus Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 06.03.03 13:51 
Danke für die Prompte Antwort, sie hat mir sehr geholfen.
Ich habe die Komponente gefunden: LMDFormStyler. (Dass ich da nicht selbst draufgekommen bin?!)

Aber ganz so einfach ist das nicht. Wenn man nicht das komplette Titel-Design der Komponente übernehmen will, so muss man mit dem Event OnCaptionPaint arbeiten. Darin kann man dann auf das Canvas des Fenstertitels schreiben. Das funzt.
Aber: es funzt nur bei Formularen, die bei BorderIcons keinen Minimize- und Maximize- Button eingestellt haben. (Mit Hilfe hab ich's nicht versucht). Wenn einer dieser BorderIcons auf True gestellt wird, wird das Ereignis OnCaptionPaint nicht ausgelöst.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Do 06.03.03 14:37 
Probiers gleich ganz ohne Komponente...! Du kannst dir deine Titelleiste selbst gestalten, wenn du die Message WM_NCPAINT abfangst. Mit GetWindowDC bekommst du dann ein DC für das gesamte Fenster (auch den NonClient-Bereich) und kannst dir dann deinen Fenstertitel selbst in die Titelleiste pinseln. Hinweis: WM_NCPAINT sollte trotzdem an die Standard-WndProc weitergereicht werden (!!) da sonst weder rahmen, noch die Titelleiste selbst gezeichnet werden.

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!