Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 576

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
У меня есть текстовый файл заполненный с текстом. Теперь не знаю как распечатать этот текст. В инете нашел код:
Но тогда текст печатается только в одну сторону бумаги. А мне хочется напечатать как написано на файле.

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. Var
  2. Prn: TextFile;
  3. I: Word;
  4. Begin
  5. AssignPrn(Prn);
  6. Try
  7. Rewrite(Prn);
  8. Try
  9. For I:= 0 To Strings.Count - 1 Do
  10. Writeln(Prn, Strings.Strings[I]);
  11. Finally
  12. CloseFile(Prn);
  13. End;
  14. Except
  15. On EInOutError Do
  16. End;
  17.  
  18.  


Ермаханов Айбек Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ермаханов Айбек (статус: Посетитель)
Вопрос отправлен: 15 августа 2011, 17:04
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: corban

Здравствуйте, Ермаханов Айбек!
Вот рабочий кусок кода вывода на печать, не забудь подключить в uses модуль Printers.

Приложение:
  1. procedure TfMain.btnPrintClick(Sender: TObject);
  2. var
  3. PixelsX, PixelsY:integer;
  4.  
  5. i,PoleX,PoleY,iCounter: Integer;
  6. PrnText:string;
  7. TextLst:TStringList;
  8.  
  9. procedure GetPrinterInfo;
  10. begin
  11.  
  12.  
  13. end;
  14.  
  15. function PrinterCoordX(x: integer): integer;
  16. begin
  17.  
  18.  
  19. end;
  20.  
  21. function PrinterCoordY(y: integer): integer;
  22. begin
  23.  
  24.  
  25. end;
  26.  
  27. begin
  28.  
  29. TextLst:=TStringList.Create;
  30.  
  31. if PrintDialog1.Execute then
  32. begin
  33. with PrintDialog1 do
  34. begin
  35.  
  36. end;
  37. with Printer do
  38. begin
  39.  
  40.  
  41.  
  42. BeginDoc;
  43. GetPrinterInfo;
  44.  
  45.  
  46.  
  47.  
  48. for i:=0 to TextLst.Count-1 do
  49. begin
  50. if (Canvas.PenPos.y+Canvas.TextHeight(TextLst.Strings[i])) >=
  51. (PageHeight-PoleY)
  52. then
  53. begin
  54. iCounter:=i;
  55. NewPage;
  56. end;
  57. Canvas.TextOut(PoleX,PoleY+((i-iCounter) *
  58. Canvas.TextHeight(TextLst.Strings[i])),
  59. TextLst.Strings[i]);
  60. end;
  61. EndDoc;
  62. end;
  63. end;
  64. TextLst.Free;
  65. end;


Ответ отправил: corban (статус: 2-ой класс)
Время отправки: 16 августа 2011, 04:32
Оценка за ответ: 5

Комментарий к оценке: Спасибо!

Ответ #2. Отвечает эксперт: min@y™

Есть замечательный компонент для предварительного просмотра и печати. Я им несколько лет пользуюсь и очень доволен. Возьми его и не мучайся.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 16 августа 2011, 08:19
Оценка за ответ: 5

Комментарий к оценке: спасибо!

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:36
Выполнено за 0.02 сек.