|
#1
|
|||
|
|||
Печать объекта
Рябят помогите плиз. Запутался.
Я тут пытаюсь распечатать штрих-код. Скачал barcode.pas Прикрутил юнит. Теперь хочу его вывести на принтер Пытаюсь так Код:
Printer.BeginDoc; Printer.Canvas.Draw(0, 0, BarCode1); Printer.EndDoc; [Error] Unit1.pas(52): Incompatible types: 'TGraphic' and 'TBarCode' Хочет чтоб графический был, а лучше битмап. Но по сути он и есть битмап только уже в виде объекта. |
#2
|
||||
|
||||
Цитата:
|
#3
|
|||
|
|||
Тогда получается его надо преобразовать или сохранить в этот TBitmap или TGraphic?
Как бы это сделать? |
#4
|
||||
|
||||
Цитата:
p.s. Вообще нет такого понятия как "Печать объекта", так как "объект" это абстрактное понятие, его невозможно увидеть. А раз невозможно увидеть, то и распечатать тоже невозможно. |
#5
|
|||
|
|||
Согласен. Тут правильнее было бы сказать "печать компонента".
Вот сам barcode.pas _http://www.delphisources.ru/pages/sources/raznoe/2007_year/barcode39.html И мне его надо напечатать на бумаге. Помоги. |
#6
|
|||
|
|||
многие говорят надо преобразовать в битмап и можно сделать что-то типа этого
Код:
uses Printers; ... Printer.BeginDoc; try Printer.Canvas.Draw (PosX, PosY, FBarcodeBitmap); finally Printer.EndDoc; end; А как это делается? Сложновато для меня. Помогите плиииз. |
#7
|
||||
|
||||
Цитата:
К сожалению он не позволяет рисовать себя на произвольной канве без соответствующей доработки. Однако его можно распечатать обходным путём: Положи на форму панель (TPanel) и на эту панель кинь этот компонент (TBarCode). Теперь можно распечатывать на принтере эту панель со всем её содержимым следующим образом: Код:
Panel1.PaintTo(Printer.Canvas, 10, 20); |
#8
|
||||
|
||||
Так любая канва его может печатать на себе без доработок
Можно печатать таким способом: Код:
procedure TForm1.ButtonClick(Sender: TObject); var bmp:TBitMap; begin bmp:=TBitMap.Create; try bmp.Width:=BarCode1.Width; bmp.Height:=BarCode1.Height; bmp.Canvas.CopyRect(rect(0,0,bmp.Width,bmp.Height),BarCode1.Canvas , rect(0,0,BarCode1.Width,BarCode1.Height)); //printer.PrinterIndex:=1; printer.BeginDoc; printer.Canvas.Draw(0,0,bmp); printer.EndDoc; finally bmp.Free; end; end; |
#9
|
||||
|
||||
Цитата:
Но вообще лучше доработать компонент, чтобы он мог выводить штрих-код на произвольную канву, тогда можно будет вывести например в метафайл, а уже с этим метафайлом можно творить что угодно без потери качества (в отличие от TBitmap). |
#10
|
|||
|
|||
Спасибо ребят.
Первые трудности. По методу Poli-smen'a у меня появляется ошибка при компиляции и при запуске процедуры . Project Project.exe raised exception class Eprinter with message "Printer is not currently printing". Process stopped. Use Step or Run to continue. А по методу YVitaliy Картинка получается не четкой и маленькой Как это можно исправить. Тут можно найти pdf примера печати. http://www.aqula.ru/barcode.pdf Как можно почетче распечатать и без ошибок? |
#11
|
||||
|
||||
Цитата:
Цитата:
А чтобы увеличить масштаб - вместо Draw используй StretchDraw. И повторю ещё раз что идеальнее всего было бы доделать этот компонент, чтобы он мог пропечатывать штрих-код на произвольной канве. |
#12
|
|||
|
|||
Цитата:
http://www.aqula.ru/barcode1.pdf Цитата:
Вроде ничем не перекрывается. Цитата:
|