Печать чека с помощью LazReport

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Печать чека с помощью LazReport

Сообщение AlexDanilov » 19.10.2017 15:47:57

Привет, друзья.

Пожалуйста, подскажите мне, подойдет ли компонент LazReport для печати чеков.

Основные требования
1. Выставление ширины бумаги 40 или 80 символов
2. Возможность расширять высоту по контенту, не по странице.
3. Возможность программно создавать/менять шаблон.
4. Возможность писать по центру (учитывая размер бумаги)
5. Возможность печатать жирным, менять размер шрифта
6. Возможность рисовать линии разной жирности

Вот пример чека.
Код: Выделить всё
|-------------------------------------|
|               Заказ №4              |
|                                     |
| Стол №10, Главный зал               |
|-------------------------------------|
| Салат греческий         1  100  100 |
|                                     |
|-------------------------------------|
|                          Итого: 100 |
|-------------------------------------|

Сейчас пытаюсь рисовать чек в canvas, но выходит не очень.

Буду признателен, если поделитесь примером, как программировать шаблон отчета в run-time.

Также думаю, может лучше создавать PDF и его отправлять на печать?
AlexDanilov
новенький
 
Сообщения: 17
Зарегистрирован: 24.10.2016 15:11:46
Откуда: Kiev

Re: Печать чека с помощью LazReport

Сообщение wadman » 19.10.2017 16:12:05

Всё это возможно. Но приводить пример, это написать бОльшую часть работы. Если не всю...
wadman
постоялец
 
Сообщения: 122
Зарегистрирован: 18.10.2016 15:54:28

Re: Печать чека с помощью LazReport

Сообщение AlexDanilov » 19.10.2017 16:32:49

wadman писал(а):это написать бОльшую часть работы. Если не всю...

Мне будет достаточно примера из одной строки по центру, например.
AlexDanilov
новенький
 
Сообщения: 17
Зарегистрирован: 24.10.2016 15:11:46
Откуда: Kiev

Re: Печать чека с помощью LazReport

Сообщение wadman » 19.10.2017 16:43:58

AlexDanilov писал(а):Мне будет достаточно примера из одной строки по центру, например.

Опишу логику: в отчете должен быть бэнд (MasterData). Либо вставить его в шаблон в дизайнере, либо кодом. А уже в него вставляется строка (вроде TfrMemoView).
Позиция и размеры задаются кодом.

Примеры: https://www.google.com/search?q=lazrepo ... pascal.org
wadman
постоялец
 
Сообщения: 122
Зарегистрирован: 18.10.2016 15:54:28

Re: Печать чека с помощью LazReport

Сообщение tema » 19.10.2017 16:45:00

Я вот так чек печатаю:
Код: Выделить всё
        with Printer do
        begin
          try
            BeginDoc;
            Canvas.Font.Name := 'Courier New';
            Canvas.Font.Size := 8;
            Canvas.Font.Color := clBlack;
            LineHeight := Round(1.2 * Abs(Canvas.TextHeight('I')));
            u := 0;
            for i := 0 to pechat.Count - 1 do
            begin
              if i = 5 then
                Canvas.Font.Size := 16;
              if i = 6 then
                Canvas.Font.Style := [fsBold];
              if i = 7 then
              begin
                Canvas.Font.Size := 8;
                Canvas.Font.Style := [];
              end;
              Canvas.TextOut(5, 5 + (i + u) * LineHeight, pechat.Strings[i]);
              if i in [5, 6] then
                Inc(u);
            end;

            Canvas.Brush.Style := bsClear;
            Canvas.Rectangle(5, (pechat.Count + u) * LineHeight, 500,
              (pechat.Count + u + 4) * LineHeight);
            Canvas.TextOut(5, 5 + (pechat.Count + u + 5) * LineHeight,
              '------------------------');
          finally
            EndDoc;
          end;
        end;

pechat - это у меня массив строк striglist
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

Re: Печать чека с помощью LazReport

Сообщение Deimos » 19.10.2017 20:42:48

Я решил проблему печатью на принтере чеков и ширину подобрал экспериментальным путем ))) Если нужна конкретика, то какая конкретно? (стандартная печать лазрепорта)
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

Рейтинг@Mail.ru