Поиск сообщества
Показаны результаты для тегов 'fmx.printer'.
Найдено: 2 результата
-
Здравствуйте! Подскажите пожалуйста в чем причина смещения изображения при печати по горизонтали относительно листа? procedure ThePrint(day : arraySheet; prn : TPrintDialog); var DestRect, Rect_cell, Rect_Size:TRectF; i,pageall:integer; textFill: tFillTextFlags; poses : TPoses; Col1 : boolean; COLROW : integer; sizeRow : Single; Image : TImage; begin textFill := []; COLROW := 63; Printer.ActivePrinter := Printer.Printers[1]; Printer.ActivePrinter.SelectDPI(Printer.ActivePrinter.DPI[Printer.ActivePrinter.DPICount-1]); Printer.BeginDoc; sizeRow := Printer.PageHeight / COLROW; poses := getPosY(day, sizeRow); Printer.Canvas.BeginScene; Printer.Canvas.Font.Size := sizeRow * 0.8; Printer.Canvas.Font.Family := 'Times New Roman'; Printer.Canvas.Fill.Color := TAlphaColorRec.Black; Printer.Canvas.Fill.Kind := TBrushKind.Solid; Col1 := true; var WCol := Printer.PageWidth / 2 - 10; var WColW := WCol / 3; for var s := 0 to Length(poses)-1 do begin if Col1 then DestRect := RectF(0, poses[s], WCol, poses[s] + sizeRow) else DestRect := RectF(WCol, poses[s], Printer.Canvas.Width, poses[s] + sizeRow); Printer.Canvas.Font.Style:= Printer.Canvas.Font.Style + [TFontStyle.fsBold]; Printer.Canvas.FillText(DestRect,day[0].listSheme[s].name,True,1,textFill,TTextAlign.Center,TTextAlign.Center); Printer.Canvas.Font.Style:= Printer.Canvas.Font.Style - [TFontStyle.fsBold]; for var p := 0 to Length(day[0].listSheme[s].listPosition) - 1 do begin var nameSize := day[0].listSheme[s].listPosition[p].t + 'x' + day[0].listSheme[s].listPosition[p].w + 'x' + day[0].listSheme[s].listPosition[p].l + '='; if day[0].listSheme[s].listPosition[p].c.ToInteger > 1 then nameSize := nameSize + day[0].listSheme[s].listPosition[p].c + 'л'; Rect_cell := RectF(10, poses[s] + (sizeRow * (p+1)), WCol-30, poses[s] + (sizeRow * (p+2))); Rect_Size := RectF(0, poses[s] + (sizeRow * (p+1)), WCol - WColW, poses[s] + (sizeRow * (p+2))); if not Col1 then begin Rect_cell.Left := Rect_cell.Left + WCol + 20; Rect_cell.Right := Rect_cell.Right + WCol + 10; Rect_Size.Left := Rect_Size.Left + WCol + 20; Rect_Size.Right := Rect_Size.Right + WCol + 10; end; Printer.Canvas.FillText(Rect_cell, day[0].listSheme[s].listPosition[p].pn + ')' + day[0].listSheme[s].listPosition[p].s, True,1,textFill,TTextAlign.Leading,TTextAlign.Center); Printer.Canvas.FillText(Rect_Size, nameSize, True,1,textFill,TTextAlign.Trailing,TTextAlign.Center); end; Col1 := not(Col1); end; for var row := 1 to COLROW do begin Printer.Canvas.DrawLine(TPointF.Create(0, sizeRow * row), TPointF.Create(WCol, sizeRow * row), 0.5); Printer.Canvas.DrawLine(TPointF.Create(WCol + 20, sizeRow * row), TPointF.Create(Printer.Canvas.Width, sizeRow * row), 0.5); end; DestRect := RectF(0, 0, Printer.Canvas.Width, sizeRow); Printer.Canvas.FillText(DestRect, day[0].name, True, 1, textFill, TTextAlign.Center,TTextAlign.Center); Printer.Canvas.DrawLine(TPointF.Create(WCol, sizeRow), TPointF.Create(WCol, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(WCol + 20, sizeRow), TPointF.Create(WCol + 20, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(0, sizeRow), TPointF.Create(500, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(Printer.Canvas.Width, sizeRow), TPointF.Create(Printer.Canvas.Width, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(WCol-WColW+20, sizeRow), TPointF.Create(WCol-WColW+20, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(Printer.Canvas.Width-WColW+20, sizeRow), TPointF.Create(Printer.Canvas.Width-WColW+20, Printer.Canvas.Height), 1); Printer.Canvas.EndScene; Printer.EndDoc; end; ВОТ ЧТО ПОЛУЧАЕТСЯ: Линия спецом под угол, что бы понять само смещение в лево относительно листа. Соответственно текст тоже видно на половину Написано на Delphi 11, FMX.Printer Заранее спасибо!
- 18 ответов
-
- fmx.printer
- печать
-
(и ещё 2 )
C тегом:
-
Как распечатать форматированный текст в FMX.Printer?