Форум: "Начинающим";
Текущий архив: 2014.11.09;
Скачать: [xml.tar.bz2];
ВнизУстройства вывода. Работа с принтером Найти похожие ветки
← →
Delphi_Newbie (2013-10-27 19:11) [0]Доброго времени суток, уважаемые пользователи!
Помогите разработать приложение для вывода содержимого компонента класса TMemo на печать с использованием вывода на принтер, как в текстовый файл. Приложение должно иметь возможность настройки шрифта выводимого текста.
Спасибо за внимание!
← →
Inovet © (2013-10-27 19:15) [1]Как в текстовом файле настроить размер шрифта?
← →
sniknik © (2013-10-27 19:26) [2]> Как в текстовом файле настроить размер шрифта?
ну, на старых(?) матричных/струйниках есть возможность переключить шрифт внутренними командами, ескейп последовательностями... они прямо в тексте прописываются, но естественно шрифты могут быть только "встроенные" в принтер. в принципе, так можно и "преобразовательный" драйвер написать. чтоб на входе текст, а на выходе обычный виндовый принтер.
> Помогите разработать приложение ...
насколько универсальным оно должно быть, и какой бюджет разработки?
← →
Inovet © (2013-10-28 06:14) [3]> [2] sniknik © (27.10.13 19:26)
Ну так и на лазерных можно, и не только встроенными шрифтами а в графике, если на принтере есть графика. Если нет, так различными комбинациями символов создавать плотность заполнения. Простор для фантазии помноженный на количество моделей принтеров. Творческая задача, я бы сказал - в ней даже художественная сторона присутствует. Но есть сомнения насчёт текстовости такого файла.
Подсказака автору к первой части вопроса:
> [0] Delphi_Newbie (27.10.13 19:11)
> вывода на принтер, как в текстовый файл
Принтер в системе представлен как файл с именем PRN. Если не представлен, то назначается с помощью команды
net use
← →
Inovet © (2013-10-28 06:31) [4]> [2] sniknik © (27.10.13 19:26)
> шрифты могут быть только "встроенные" в принтер
Кстати, давно не видел, а раньше в Виндоус был драйвер чего-то там типа "Generic matrix printer", который апроксимировал вывод под встроенные шрифты типичного матричного принтера. Их Ворд так и показывал на превью при выборе вывода на этот принтер. Да, а при выводе мимо принтера в файл (режим задаётся в настройках принтера), создавался текстовый файл со вставленными esc последовательностями. Эх, матричные принтеры. Ничего, был еще параллельный барабанный принтер. Быстрый - как лазерники, а грохот какой стоял, куда там матричным. Вот на таком особенно интересно вывести текстовый файл разными шрифтами.
← →
Styx (2013-10-28 10:34) [5]Телепатор подсказывает, что топикстартер хочет получить stream, такой, что отправляемое в него печаталось бы на принтере выбранным шрифтом...
← →
брат Птибурдукова (2013-10-28 11:13) [6]
> Delphi_Newbie (27.10.13 19:11)
AssignPrn() + F1 + далее по ссылкам. Но сей подход уже лет пятнадцать как устарел.
← →
Delphi_Newbie (2013-11-17 18:50) [7]Каким образом можно вывести содержимое компонента класса TMemo на печать с использованием вывода на принтер, как в текстовый файл?
У меня такой вариант:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Printers, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo: TMemo;
FontDialog1: TFontDialog;
PrintDialog1: TPrintDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1click(sender: tobject);
begin
if FontDialog1.Execute then Memo.Font:= FontDialog1.Font;
end;
procedure TForm1.Button2Click(sender: tobject);
var i:integer;
Prn:TextFile;
begin
//Если запущен диалог печати и не было отмены
if PrintDialog1.Execute then begin
//Задание количества копий
Printer.Copies:=PrintDialog1.Copies;
//Задание параметров шрифта
Printer.Canvas.Font.Name:="Times New Roman";
Printer.Canvas.Font.Size:=14;
//Связывание текстового файла с принтером по умолчанию
AssignPrn(Prn);
try
//Открытие файла для записи
Rewrite(Prn);
try
//Вывод строк из поля Memo
for i := 0 to Memo.Lines.Count - 1 do
writeln(Prn, Memo.Lines[i]);
finally
//Закрытие принтера
CloseFile(Prn);
end;
except
//Сообщение при ошибке
on EInOutError do
MessageDlg("Ошибка печати текста.", mtError, [mbOk], 0);
end;
end;
end;
end.
Однако, не получается вывести содержимое компонента класса TMemo на печать с использованием вывода на принтер, как в текстовый файл.
Что не так?
← →
Delphi_Newbie (2013-11-17 19:20) [8]Почему не выводится ничего в текстовый файл, а сразу идет на печать?
← →
brother © (2013-11-17 19:25) [9]а в какой текстовый файл должно выводиться? (имя например) и причем тут вообще файлы?
← →
Delphi_Newbie (2013-11-17 19:30) [10]Doc1.txt - к примеру так
← →
Delphi_Newbie (2013-11-17 19:31) [11]Или любой другой формат текстового документа
← →
Anatoly Podgoretsky © (2013-11-17 20:22) [12]
procedure TMainForm.mfPrintClick(Sender: TObject);
var
POutput: TextFile;
Ln: LongInt;
begin
if PrintDialog.Execute then begin
AssignPrn(POutput);
ReWrite(POutput);
Printer.Canvas.Font := EditWnd.Font;
for Ln := 0 to EditWnd.Lines.Count - 1 do begin
WriteLn(POutput,EditWnd.Lines[Ln]);
end;
CloseFile(POutput);
end
end;
Размер и шрифты регулируются Memo, размером окна и шрифта
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.11.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.002 c