Добрый день. Появилась неоюходимость вывода на принтер...
Поискал в нете код взыл такой:
Код:
procedure TForm1.Button2Click(Sender: TObject);
const
TOTAL_PAGES = 4; // Ñêîëüêî ñòðàíèö ïå÷àòàòü
var
printDialog : TPrintDialog;
page, startPage, endPage : Integer;
begin
// Ñîçäàíèå äèàëîãà âûáîðà ïðèíòåðà
printDialog := TPrintDialog.Create(Form1);
// Óñòàíîâêà îïöèé äèàëîãà ïå÷àòè
printDialog.MinPage := 1;
printDialog.MaxPage := TOTAL_PAGES;
printDialog.ToPage := TOTAL_PAGES;
printDialog.Options := [poPageNums];
// Åñëè ïîëüçîâàòåëü âûáðàë ïðèíòåð (èëè çíà÷åíèå ïî óìîë÷àíèþ), òî ïå÷àòàåì!
if printDialog.Execute then
begin
// Èñïîëüçóéòå ôóíêöèþ Printer, ÷òîáû ïîëó÷èòü äîñòóï ê ãëîáàëüíîìó îáúåêòó TPrinter.
// Set to landscape orientation
Printer.Orientation := poLandscape;
// Óñòàíîâèòå çàãîëîâîê printjob - êàê îíî ïîÿâëÿåòñÿ â ìåíåäæåðå çàäàíèÿ ïî âûâîäó íà ïå÷àòü
Printer.Title := 'Test print for Delphi';
// Óñòàíàâëèâàåì ÷èñëî êîïèé äëÿ ïå÷àòè êàæäîé ñòðàíèöû
Printer.Copies := printDialog.Copies;
// Íà÷àëî ïå÷àòè
Printer.BeginDoc;
// Ïîëüçîâàòåëü âûáðàë äèàïàçîí ñòðàíèö?
if printDialog.PrintRange = prPageNums then
begin
startPage := printDialog.FromPage;
endPage := printDialog.ToPage;
end
else // Âñå ñòðàíèöû
begin
startPage := 1;
endPage := TOTAL_PAGES;
end;
// Óñòàíîâêà íîìåðà íà÷àëüíîé ñòðàíèöû
page := startPage;
// Ïðîäîëæàåì ïå÷àòàòü ïîêà âñ¸ OK
while (not Printer.Aborted) and Printer.Printing do
begin
// Ïèøåì íîìåð ñòðàíèöû
Printer.Canvas.Font.Color := clBlue;
Printer.Canvas.TextOut(40, 20, 'Page number = '+IntToStr(page));
// Óâåëè÷èâàåì íîìåð ñòðàíèöû
Inc(page);
// Òåïåðü íà÷èíàåì íîâóþ ñòðàíèöó - åñëè îíà íå ïîñëåäíÿÿ
if (page <= endpage) and (not printer.aborted)
then Beep(); //Printer.NewPage;
end;
// Êîíåö ïå÷àòè
Printer.EndDoc;
end;
end;
Так он на принет после первого запуска напечатал что
, ошибка таймаут. еще пробывал - программа тупо зависает а на принтер вообще ничего не выводится...
Вопрос, что неправильного в показаном коде и как с этим бороться?
И еще небольшой вопрос: как узнать (получить) максимальную ширину окна программы?