|
Posted by webmaster Guido on June 25, 2003:
In Reply to: Re:Re:Re: Printing calculated results posted by Lionel on June 25, 2003:
: I would like to use a Print Button to make a hardcopy of the Sine, Cosine, Tangent, etc. The following code will display the results on the form but I would like to print out a hardcopy. Here is a description of the simplest way to print your data. Along the way, I'll also give a few tips. 1. Start by adding "Printers" to the USES statement (just below the word "interface" in the unit's code). For example, if it reads: then you change it to: 2. Next, let's add a button and name it "btnPrint". In the Object Inspector, set it's property "Enabled" to FALSE (we'll only enable it when there are valid data to be printed). 3. In the beginning of the calculations procedure, disable btnPrint, and enable it at the end of the routine. That way, the user can only print if there are valid data, i.e. if nothing went wrong in the CalcClick procedure. Your changed code would look like this: procedure TForm1.calcClick(Sender: TObject);
var
...variable declarations...
begin
btnPrint.Enabled := False; // add this line
try
Degree := StrToInt(deg.Text);
...
Edit9.Text := FloatToStr(LogSine);
btnPrint.Enabled := True; // add this line
end;
4. Here's a template for a simple print routine: procedure PrintSomething;
var F: TextFile;
begin
Printer.Title := title_of_printjob;
Printer.Canvas.Font.Name := name_of_font;
Printer.Canvas.Font.Size := size_of_font;
AssignPrn(F);
Rewrite(F);
try
WriteLn(F, line_to_be_printed);
WriteLn(F, next_line_to_be_printed);
// more lines here...
finally
CloseFile(F);
end;
end;
Now for real... As you have already the formatted values sitting in the TEdit boxes, you can print them out like this: procedure TForm1.btnPrintClick(Sender: TObject);
var
F: TextFile;
begin
Printer.Title := 'Trigo';
Printer.Canvas.Font.Name := 'Arial';
Printer.Canvas.Font.Size := 10;
AssignPrn(F);
Rewrite(F);
try
WriteLn(F, 'Trigonometric Calculations');
WriteLn(F, '') ; // blank line
WriteLn(F, 'Angle: ', Deg.Text, Min.Text, Sec.Text;
WriteLn(F, 'Decimal angle: ', Edit4.Text);
WriteLn(F, 'Rad:', Edit5.Text);
WriteLn(F, 'Sine:', Edit1.Text);
// and so on for more lines...
finally
CloseFile(F);
end;
end;
5. Finally, add some code to beautify the printout, such as: add some blank lines at the top, add some spaces at the left to simulate margins, use a bigger font for the header, and so on. ==================
|
|