[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Accessing default printer font

Posted on 1998-09-28
2
Medium Priority
?
428 Views
Last Modified: 2013-12-02
This seems a bit silly, but I can't get it to work.

How do I print using the default printer font? Whenever I print using Delphi, it switches to the default windows printer font, or the font I set it to in the printer.canvas.font method, etc. Even when I use the assignprn(textfile) method, it switches the font... All I want is a dump in the default printer font.

The reason? The default font uses the old PC-8 character set. I'm trying to use an old piece of code that has boxes around the text for a report. Setting the printer.font and printer.charset doesn't seem to work. I can set the charset to ansi, but not to the old IBM PC-8 characterset, even though the printer has that set.
0
Comment
Question by:oneeye
2 Comments
 
LVL 5

Accepted Solution

by:
ronit051397 earned 200 total points
ID: 1340997
This is from Borland documents
http://www.inprise.com/devsupport/delphi/qanda/808.html

Question:

Instead of printing graphics, how can I get TPrinter to use the default resident font in the printer?

            Answer:

            Use the Windows API function GetStockObject() to retrieve the
            device default font handle, and assign it to Printer.Font.Handle.

            Example:

            uses Printers;

            procedure TForm1.Button1Click(Sender: TObject);
            var
              tm : TTextMetric;
              i : integer;
            begin
              if PrintDialog1.Execute then begin
                Printer.BeginDoc;
                Printer.Canvas.Font.Handle := GetStockObject(DEVICE_DEFAULT_FONT);
                GetTextMetrics(Printer.Canvas.Handle, tm);
                for i := 1 to 10 do begin
                  Printer.Canvas.TextOut(100,
                                         i * tm.tmHeight +
                                         tm.tmExternalLeading,
                                         'Test');
                end;
                Printer.EndDoc;
              end;
            end;


0
 

Author Comment

by:oneeye
ID: 1340998
Ah, very good. One place I forgot to check.

I am much obliged.
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…
Suggested Courses

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question