Program TextDemo

uses WinTypes, WinProcs, WObjects, Strings;

type
 PDemoWindow = ^TDemoWin;
 TDemoWin = object(TWindow)
   procedure Paint(PaintDC: HDC;
	var PaintInfo: TPaintStruct); virtual;
  end;

  TTextDemo = object(TApplication)
    procedure InitMainWindow;virtual;
  end;

procedure TDemoWin.Paint;
const
 TestString : PChar = 'Pascal Text Demo';

var
 Bounds : TRect;
 DemoFont : HFont;
 X, Y : integer;

begin
 GetClientRect(HWindow, Bounds);
 Y:=20;
 for X := OEM_FIXED_FONT to SYSTEM_FIXED_FONT do
  begin
    DemoFont := GetStockObject(X);
    SelectObject(PaintDC, DemoFont);
    TextOut(PaintDC, X*5, Y, TestString, StrLen(TestString));
    Y := Y + HiWord(GetTextExtent(PaintDC, 'T', 1) + 10;
    end;
end;

procedure TTextDemo.InitMainWindow;
begin
 MainWindow := New(PTextWindow, Init(nil, 'Text Demo'));
end;

var
 DemoApp: TTextDemo;

begin
 DemoApp.Init('Text Demo');
 DemoApp.Run;
 DemoApp.Done;
end.

