Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.11.09;
Скачать: CL | DM;

Вниз

Устройства вывода. Работа с принтером   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.005 c
15-1384509909
Littleman
2013-11-15 14:05
2014.11.09
Подскажите литературу по Delphi XE5 android


3-1300996686
федя
2011-03-24 22:58
2014.11.09
Нормализация банковского счета


15-1396291606
TidSSL
2014-03-31 22:46
2014.11.09
Смотрелка фотографий для андроид?


15-1396021719
Отупевший
2014-03-28 19:48
2014.11.09
Не могу решить квадратное уравнение


15-1389715544
ТимоховДА
2014-01-14 20:05
2014.11.09
Сообщение Excel о неуникальности имени _FilterDatabase