Вниз
Скачать: 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.029 c
1-1082097644
Ivolg
2004-04-16 10:40
2004.05.02
FindDialog


6-1078771733
Lena19
2004-03-08 21:48
2004.05.02
инди сокет


8-1076051433
Onward
2004-02-06 10:10
2004.05.02
SetPixel??????????


3-1080986096
Хэтч
2004-04-03 13:54
2004.05.02
Можно ли "привязать" Image к строке в Table ?


14-1081173350
Vlad
2004-04-05 17:55
2004.05.02
Защита программы от несанкционированного копирования




   Наверх