Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: 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 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.032 c
14-1080124221
panov
2004-03-24 13:30
2004.04.18
Вопросы по модерированию.


1-1080597988
KyRo
2004-03-30 02:06
2004.04.18
Типизированиык файлы


6-1077024626
Leech
2004-02-17 16:30
2004.04.18
Indy IdFTP, WriteFile()


14-1080319593
mmmaloy
2004-03-26 19:46
2004.04.18
Еще одна задача


14-1080370321
konstantinov
2004-03-27 09:52
2004.04.18
ПК для ребенка