Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - gedrehte Schrift


D. Annies - Di 26.01.10 12:41
Titel: gedrehte Schrift
Hi, Delpher,

wie das so ist:
den folgenden Codeschnipsel wollte ich mal ausprobieren, aber er hat noch einen Fehler in
Zeile 30 [Fehler] Unit1.pas(30): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
Zeile 37 [Fehler] Unit1.pas(37): Inkompatible Typen: 'tagLOGFONTA' und 'Pointer'

aber wie bereinige ich das?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);  //Gedrehte Schrift
var  lf: LOGFONT; // Windows-eigene Schriftartstruktur
begin
  Canvas.Brush.Style := bsClear; // Pinselstil auf Transparent setzen
  FillChar(Addr(lf), SizeOf(lf), Byte(0));
  lf.lfHeight := 20;
  lf.lfEscapement := 10 * 45// Grad der Drehung
  lf.lfOrientation := 10 * 45;
  lf.lfCharSet := DEFAULT_CHARSET;
  StrCopy(lf.lfFaceName, 'Tahoma');

  Canvas.Font.Handle := CreateFontIndirect(Addr(lf));

  Canvas.TextOut(10100'Gedrehter Text'); // Ausgabe der Schrift
end;


end.


Danke für Hilfe,
Detlef


SvenAbeln - Di 26.01.10 13:09

Da dein Code keine Zeilen 30 und 37 enthält, rate ich mal.

Ungetestet:

Delphi-Quelltext
1:
2:
3:
4:
[...]
FillChar(lf, SizeOf(lf), Byte(0));
[...]
Canvas.Font.Handle := CreateFontIndirect(@lf);


Tilman - Di 26.01.10 13:21

Ne das @ brauchts auch nicht. Einfach in beiden Zeilen das addr() rausnehmen dann gehts.


D. Annies - Di 26.01.10 13:23

Danke, ihr zwei: Perfekt!
Gruß aus Lübeck,
Detlef