Вниз
Скачать: CL | DM;

Выручайте. Печать Bitmap.   Найти похожие ветки 

← →
siriusP   (2004-04-14 18:18) [0]

Друзья выручайте.

Access violation при печати.

procedure PrintMe(aPrinter: TPrinter; aBitmap: TBitmap); //aCanvas: TCanvas);
begin
 aPrinter.Canvas.StretchDraw(aBitmap.Canvas.ClipRect, aBitmap); // вот здесь Access violation
 //aPrinter.Canvas.CopyRect(aCanvas.ClipRect, aCanvas, aCanvas.ClipRect);
end;

procedure Printbill;
 var //tmpCanvas: TCanvas;
     tmpBitmap: TBitmap;
begin
 tmpBitmap:= TBitmap.Create;
 try
   Printer.BeginDoc;
   try
     tmpBitmap:= Createbill();
     PrintMe(Printer, tmpBitmap);
   finally
     Printer.EndDoc;
   end;
 finally
   tmpBitmap.Free;
 end;
end;

function CreateSticker(): TBitmap;
 var tmpCanvas: TCanvas;
     tmpBitmap: TBitmap;
begin
 tmpBitmap:= TBitmap.Create;
 try
   //tmpCanvas.Handle:= GetDeviceContext(notUsed);
   x:= 0; y:= 0;
   tmpBitmap.Canvas.Font.Size:= 6;
   tmpBitmap.Canvas.TextOut(x+130,y+5,"Текст0");
   tmpBitmap.Canvas.TextOut(x+130,y+65,"Текст1");
   tmpBitmap.Canvas.Rectangle(x+130,y+130,x+1000,y+127);
   tmpBitmap.Canvas.TextOut(x+10,y+140,"Текст2");
   tmpBitmap.Canvas.Font.Size:= 9;
   tmpBitmap.Canvas.Font.Style:= [fsBold];
   result:= tmpBitmap;//.Canvas;
 finally
   //tmpCanvas.Free;
   tmpBitmap.Free;
 end;
end;


← →
metalfan ©   (2004-04-14 18:26) [1]

дааа...

что за функция CreateBill?
зачем ты создаешь/особождаешь tmpBitmap в куче мест?
> function CreateSticker(): TBitmap;
>  var tmpCanvas: TCanvas;
>      tmpBitmap: TBitmap;
> begin
>  tmpBitmap:= TBitmap.Create;
>  try
>    //tmpCanvas.Handle:= GetDeviceContext(notUsed);
>    x:= 0; y:= 0;
>    tmpBitmap.Canvas.Font.Size:= 6;
>    tmpBitmap.Canvas.TextOut(x+130,y+5,"Текст0");
>    tmpBitmap.Canvas.TextOut(x+130,y+65,"Текст1");
>    tmpBitmap.Canvas.Rectangle(x+130,y+130,x+1000,y+127);
>    tmpBitmap.Canvas.TextOut(x+10,y+140,"Текст2");
>    tmpBitmap.Canvas.Font.Size:= 9;
>    tmpBitmap.Canvas.Font.Style:= [fsBold];
>    result:= tmpBitmap;//.Canvas;
>  finally
>    //tmpCanvas.Free;
>    tmpBitmap.Free; в частности ЗДЕСЬ???
>  end;
> end;


← →
siriusP   (2004-04-14 18:31) [2]

Чтобы освободить память


← →
metalfan ©   (2004-04-14 18:35) [3]

намана... значит ты типа создал битмап, нарисовал на нем и прибил...
а смысл? что функция то возвращает? указатель на освобожденный объект?


← →
siriusP   (2004-04-14 18:41) [4]

Да согласен, исправил на result.Canvas


← →
siriusP   (2004-04-14 18:49) [5]

Но на принтер ничего не приходит???


← →
metalfan ©   (2004-04-14 19:02) [6]

в

> function CreateSticker(): TBitmap;

tmpBitmap убрать нафик, заменить на Result


> begin
>  tmpBitmap:= TBitmap.Create; Лишнее создание битмапа - он создается в CreateSticker
>  try
>    Printer.BeginDoc;
>    try
>      tmpBitmap:= Createbill();
>      PrintMe(Printer, tmpBitmap);



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.019 c
7-1074853800
ZMaximI
2004-01-23 13:30
2004.05.02
Байты и Биты


8-1075636239
Alexis
2004-02-01 14:50
2004.05.02
"подрагивание" изображения


7-1079334850
comwad
2004-03-15 10:14
2004.05.02
Как послать сообщение неактивному приложению ?


4-1078821958
EXE7
2004-03-09 11:45
2004.05.02
второе окно на API-очереди,сделать окно


3-1081240823
GIL
2004-04-06 12:40
2004.05.02
Работа с Yaffil




   Наверх