function TExtPageControl.FontToLogFont(Font: TFont): TLogFont;
begin
//Font-Werte uebergeben
FillChar(result, sizeof(TLogFont), #0);
result.lfHeight:= Font.Height;
if (fsBold
in Font.Style)
then
result.lfWeight:= FW_BOLD
else
result.lfWeight:= FW_NORMAL;
result.lfItalic := byte(fsItalic
in Font.Style);
result.lfUnderline := byte(fsUnderline
in Font.Style);
result.lfStrikeOut := byte(fsStrikeOut
in Font.Style);
result.lfCharSet := Font.Charset;
result.lfOutPrecision := OUT_DEFAULT_PRECIS ;
result.lfClipPrecision := CLIP_LH_ANGLES
or CLIP_DEFAULT_PRECIS ;
result.lfQuality := DEFAULT_QUALITY;
result.lfPitchAndFamily:= byte(Font.Pitch);
//Ausrichtung des Textes
case TabPosition
of
tpLeft : result.lfEscapement:= 900;
tpRight: result.lfEscapement:= -900;
end;
//Schriftart
StrPCopy(result.lfFaceName, Font.
Name);
end;
procedure TExtPageControl.WMPaint(
var Message: TWMPaint);
var
lpPaint : tagPaintStruct;
HBr : HBrush;
HPe : HPen;
HFo : HFont;
Rect : TRect;
i1, i2 : integer;
lf : TLogFont;
b1 : boolean;
begin
AllocConsole;
//Falls noch kein DC wird es ueber BeginPaint erstellt
if Message.DC = 0
then begin
BeginPaint(
Handle, lpPaint);
Message.DC:= lpPaint.hdc;
end;
//Zeichnen der Tabs (falls vorhanden)
if PageCount > 0
then begin
i1:= -1;
//Hintergrundfarbe -> Transparent
SetBKMode(
Message.DC, TRANSPARENT);
//Font umwandeln in LogFont
LF:= FontToLogFont(Font);
//Font erstellen
HFo:= CreateFontIndirect(lf);
SelectObject(
Message.DC, HFo);
if Hfo = 0
then begin
Writeln('
ERROR HFO');
end;
CreateMultiLineTabList;
//Wenn mindestens ein Tab sichtbar
if NextTabListItemExists(-1)
then begin
i1:= -1;
//Zeichnen der sichtbaren Tabs
repeat
inc(i1);
//Zeichnen des Tabs
DrawTab(
Message.DC, FTabList[i1].
Index, FTabList[i1].Rect);
until not NextTabListItemExists(i1);
end;
//Objects loeschen
DeleteObject(HBr);
DeleteObject(HPe);
DeleteObject(HFo);
end;
//Wenn BeginPaint ausgefuehrt wurde, EndPaint ausfuehren
if lpPaint.hdc <> 0
then
EndPaint(
Handle, lpPaint);
//Damit Windows nit arbeiten muss (Result = 1)
Message.Result:= 1;
end;