Главная страница | назад





Article #17958: Error 'There are no fonts installed'.

 Question and Answer Database
FAQ2958D.txt Error 'There are no fonts installed'.
Category :VCL
Platform :All
Product :All 32 bit
Question:
When I execute the FontDialog with the Device property set to
fdBoth or fdPrinter, I get an error "There are no fonts installed".
Answer:
This setting should show fonts that are compatible with either
the Printer or both the Printer and the Screen. The following is
an example of calling the Windows ChooseFont dialog directly
to provide a list of fonts that are compatible with both the screen
and the printer:
Example:
uses
Printers,
CommDlg;
procedure TForm1.Button1Click(Sender: TObject);
var
cf : TChooseFont;
lf : TLogFont;
tf : TFont;
begin
if PrintDialog1.Execute then begin
GetObject(Form1.Canvas.Font.Handle,
sizeof(lf),
@lf);
FillChar(cf, sizeof(cf), #0);
cf.lStructSize := sizeof(cf);
cf.hWndOwner := Form1.Handle;
cf.hdc := Printer.Handle;
cf.lpLogFont := @lf;
cf.iPointSize := Form1.Canvas.Font.Size * 10;
cf.Flags := CF_BOTH or
CF_INITTOLOGFONTSTRUCT or
CF_EFFECTS or
CF_SCALABLEONLY or
CF_WYSIWYG;
cf.rgbColors := Form1.Canvas.Font.Color;
if ChooseFont(cf) <> false then begin
tf := TFont.Create;
tf.Handle := CreateFontIndirect(lf);
tf.COlor := cf.RgbColors;
Form1.Canvas.Font.Assign(tf);
tf.Free;
Form1.Canvas.TextOut(10, 10, 'Test');
end;
end;
end;
7/16/98 4:31:28 PM

Last Modified: 01-SEP-99