При попытке создать объект класса TPrinter я получаю exception
В создании обьекта класса TPrinter с использованием TPrinter.Create нет необходимости, так как обьект класса TPrinter (называемый Printer) автоматически создается при использовании модуля Printers.
uses
Printers;
procedure TForm1.Button1Click(Sender: TObject);
begin
Printer.BeginDoc;
Printer.Canvas.TextOut(100, 100,
'Delphi World is the biggest source code collection!');
Printer.EndDoc;
end;
Here's the translation of the text into Russian:
Проблема здесь в том, что вы пытаетесь использовать объект Printer без объявления его сначала.
В Delphi, когда вы хотите печатать что-то с помощью встроенной функциональности печати, вам нужно объявить объект TPrinter и затем использовать его методы для начала, остановки и управления печатным заданием.
Вот обновленная версия вашего кода, которая должна работать:
uses
Printers;
procedure TForm1.Button1Click(Sender: TObject);
var
Printer: TPrinter;
begin
// Объявляем объект TPrinter
Printer := TPrinters.Create;
try
// Начинаем печатное задание
Printer.BeginDoc;
// Печатаем текст
Printer.Canvas.TextOut(100, 100, 'Delphi World - это крупнейшая коллекция исходного кода!');
// Завершаем печатное задание
Printer.EndDoc;
finally
// Освобождаем объект printer, когда мы с ним закончили
Printer.Free;
end;
end;
В обновленной версии мы объявляем объект TPrinter под именем Printer, а затем используем его методы для начала, остановки и управления печатным заданием. Мы также освобождаем объект Printer в блоке finally, чтобы предотвратить утечки памяти.
Обратите внимание, что вам не нужно вызывать TPrinters.Create, если вы только печатаете из вашей основной формы. Печатающий объект автоматически создается, когда вы входите в диалог печати или кликаете на кнопку "Печать" в панели инструментов. Однако в этом примере мы создаем новое печатное задание программно, поэтому нам нужно объявить и освободить объект Printer вручную.
Надеюсь, это поможет! Пожалуйста, если у вас есть какие-либо дальнейшие вопросы.
Попытка создания объекта класса TPrinter вызывает исключение из-за автоматического создания экземпляра класса TPrinter при использовании модуля Printers.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS