Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизПечать текста!!! Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c