Autor Beitrag
Knaecke
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 30

WIN 2000, WIN XP, Gentoo
D5 Enterprise
BeitragVerfasst: Di 16.08.05 09:13 
So, zuallererst mal muss ich ein Lob an das Forum aussprechen, ich nun schon eine Weile regelmäßig hier rein und hab schon viele Antworten gefunden, aber nun werd ich mich wohl doch mal zum selbst tippen bequemen... Da ich hier auch nach langem Suchen keine ähnliche Anfrage gefunden hab (oder mich einfach zu blöd anstelle ;) ), muss ich jetzt auch mal eine Frage fragen:

Ich hab hier ein Programm, dass u.a. Schriften aus einem .dxf importiert. Standardmäßig werden die Schriftarten im Programm als 'Courier New' ausgegeben. Erstellt wird die Schrift per
ausblenden Quelltext
1:
2:
LF.lfFaceName := 'Courier New';
font := TGPFont.Create(canvas.Canvas.Handle, PLogfontA(@LF));


lfFaceName ist vom Typen array[0..LF_FACESIZE - 1] of AnsiChar; (enthalten in der Unit Windows).

Nun möchte ich das Ganze aber für den User etwas variabler machen, so dass er bei den importierten Layern die Schriftarten, -größe usw. selbst wählen kann. Über den FontDialog komm ich an die Schriftart ran: FontDialog.Font.Name, Name ist vom Typ TFontName, was letztlich nix anderes als ein String ist.

Nun kann ich dem LF.lfFaceName leider nicht diesen String aus dem FontDialog zuweisen:
Zitat:
Inkompatible Typen: 'Array' und 'TFontName'


Gibt es dafür irgendeine Funktion?

Ich hatte zuerst schon probiert, anstelle LF: TLogFontA; (bzw. LF: TLogFont;) ein LF: TLogFontW; zu nehmen, um dann StringToWideChar(FontDialog.Font.Name, LF.lfFaceName, 32); zu nutzen, nur leider ändert sich die Schrift dann überhaupt nicht, da hab ich auch den Fehler nicht gefunden...

Weiß da jemand weiter? Gibt es da eine Funktion oder krieg ich das nur über Umwege hin? :oops:

_________________
"Kekskrümel im Bett pieksen weniger, wenn man vorher darauf uriniert", meinte mal ein Kumpel... ;)
Knaecke Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 30

WIN 2000, WIN XP, Gentoo
D5 Enterprise
BeitragVerfasst: Di 16.08.05 14:10 
Hab nun nach langem Suchen und ein wenig Zufall nun endlich die Lösung gefunden:

ausblenden Quelltext
1:
StrPCopy(LF.lfFaceName, FontDialog.Font.Name);					


Gibt 1000 Listen mit Stringfunktionen im Netz, nur diese war irgendwie nie dabei :( Die Funktion StrPCopy kannte ich daher noch nicht... Naja bin halt noch Delphi-Noob, die andere Syntax zu den mir sonst bekannten Sprachen C, C++ und Java macht mir sicherlich noch einige Male zu schaffen... ;)

_________________
"Kekskrümel im Bett pieksen weniger, wenn man vorher darauf uriniert", meinte mal ein Kumpel... ;)