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

Печать текста!!!   Найти похожие ветки 

← →
ser_ega   (2004-03-26 21:36) [0]

Если использавать такой метод распечатки текста:

procedure TForm1.Button1Click(Sender: TObject);
var
 MyFile: TextFile;
begin
 AssignPrn(MyFile);
 Rewrite(MyFile);
 Writeln(MyFile, "Print this text");
 System.CloseFile(MyFile);
end;

То как увеличить размер распечатываемого текста???


← →
Anton ©   (2004-03-26 23:20) [1]

Никак. Используй TPrinter.


← →
Anatoly Podgoretsky ©   (2004-03-27 13:54) [2]

А где здесь печать?


← →
begemot   (2004-03-28 21:55) [3]

Примерно так

procedure TMainForm.AcPrintExecute(Sender: TObject);
var
dpiX,PageX,NPageX,dX: Integer;
dpiY,PageY,NPageY,dY: Integer;
N: Integer;
X: Integer;
Y: Integer;
NextY: Integer;

PrnStr1 : String;
PrnStr2 : String;

procedure GetPrinterInfo; {Получить информацию о принтере}
begin
 dpiX:= GetDeviceCaps(printer.Handle,LogPixelsX);
 dpiY:= GetDeviceCaps(printer.Handle,LogPixelsY);
 PageX:= GetDeviceCaps(printer.Handle,HorzSize);
 PageY:= GetDeviceCaps(printer.Handle,VertSize);
end;

function CoordX(x: Integer): Integer; {Переводит из мм в пиксели}
begin
 CoordX:= round(dpiX*x/25.4)
end;

function CoordY(y: Integer): Integer; {Переводит из мм в пиксели}
begin
 CoordY:= round(dpiY*y/25.4)
end;

begin
 if GlavMemo.Lines.Count = 0 then Exit;

 GetPrinterInfo;
 Printer.BeginDoc;
 Printer.Canvas.Font:= GlavMemo.Font;
 if Printer.Orientation = poPortrait then
    begin NPageX:= 210; NPageY:= 297 end
 else
    begin NPageX:= 297; NPageY:= 210 end;
 dX:= round((NPageX - PageX)/2); dY:= round((NPageY - PageY)/2);
 NextY:= round(Printer.Canvas.Font.Size/4)+2;

 Y:= 20-dY;
 for N:= 0 to GlavMemo.Lines.Count-1 do
    begin
       PrnStr1:= GlavMemo.Lines.Strings[N];
       PrnStr2:= "";
       for X:= 1 to Length(PrnStr1) do
          begin
             if round(Printer.Canvas.TextWidth(PrnStr2+PrnStr1[x])*25.4/dpiX)
                > NPageX-25-15 then
                begin
                   Printer.Canvas.TextOut(CoordX(25-dx),CoordY(Y),
                                          PrnStr2);
                   Y:= Y+NextY;
                   PrnStr2:= PrnStr1[x]
                end
             else
                PrnStr2:= PrnStr2+PrnStr1[x];
          end;
       Printer.Canvas.TextOut(CoordX(25-dx),CoordY(Y),
                              PrnStr2);
       Y:= Y+NextY;
       if Y+NextY > NPageY-20 then
          begin
             Y:= 20-dY;
             Printer.NewPage
          end;
    end;
 Printer.EndDoc;
end;



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

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



Память: 0.46 MB
Время: 0.026 c
9-1066645021
MozG
2003-10-20 14:17
2004.04.18
Как избавиться от дополнительных клавиш в DXInput?


14-1080076271
Andy BitOff
2004-03-24 00:11
2004.04.18
На банерах кликать надо?


14-1079961432
RealRascal
2004-03-22 16:17
2004.04.18
Задача по физике - Давление в желудке у котенка


1-1080689233
HydraMarat
2004-03-31 03:27
2004.04.18
Ресурсы MS Office


3-1080177050
rosl
2004-03-25 04:10
2004.04.18
multiselect




   Наверх