Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1300996686
федя
2011-03-24 22:58
2014.11.09
Нормализация банковского счета


15-1396125003
Юрий
2014-03-30 00:30
2014.11.09
С днем рождения ! 30 марта 2014 воскресенье


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


2-1384538870
dis12345
2013-11-15 22:07
2014.11.09
установка компонента


15-1396384203
Юрий
2014-04-02 00:30
2014.11.09
С днем рождения ! 2 апреля 2014 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский