#include <printMGv2.au3>
Func _printdata($datatitle, $printdata, $pageorient);параметры: заголовок, массив с данными(для заполнения строк), ориентация страницы(альбомная или книжная)
Local $linesum = UBound($printdata) - 1
Local $hp
Local $mmssgg, $marginx, $marginy
$hp = _PrintDllStart($mmssgg)
If $hp = 0 Then Return
$printin = _PrintSetPrinter($hp)
If $printin = 0 Or $printin = -1 Then
_PrintAbort($hp)
_PrintDllClose($hp)
Return
EndIf
$print = _PrintGetPrinter($hp)
If $print = '' Then
_PrintAbort($hp)
_PrintDllClose($hp)
Return
EndIf
_PrintPageOrientation($hp, $pageorient)
_PrintStartPrint($hp)
Local $pgwd, $pght, $colth, $right
If $pageorient = 1 Then ;альбомная
$pgwd = _PrintGetpageheight($hp) - _PrintGetYOffset($hp)
$pght = _PrintGetpageWidth($hp) - _PrintGetXOffset($hp)
$basey = 100
$basex = 100
$colth = 300
$right = 300
ElseIf $pageorient = 0 Then ;книжная
$pght = _PrintGetpageheight($hp) - _PrintGetYOffset($hp)
$pgwd = _PrintGetpageWidth($hp) - _PrintGetXOffset($hp)
$basey = 150
$basex = 250
$colth = 350
$right = 0
EndIf
$axisx = Round($pgwd * 0.8)
$axisy = Round($pght * 0.8)
_PrintSetFont($hp, 'Arial', 18, 0, 'bold,underline')
$Title = $datatitle
$tw = _PrintGetTextWidth($hp, $Title)
$th = _PrintGetTextHeight($hp, $Title)
_PrintText($hp, $Title, $basex, _PrintGetYOffset($hp))
_PrintSetLineWid($hp, 6); толщина линий (рамка формы)
_PrintSetLineCol($hp, 0); цвет линий
_printsetfont($hp, 'Times New Roman', 12, 0, '')
$sum = ($linesum * 50) + (($linesum - 1) * 2)
;рамка формы
_PrintLine($hp, $basex, $pght - $basey - $axisy - 100, $axisx + $basex - 175 - $right, $pght - $basey - $axisy - 100);горизонтальная линия - верх
_PrintLine($hp, $basex, $pght - $basey - $axisy, $axisx + $basex - 175 - $right, $pght - $basey - $axisy);горизонтальная линия - верх
_PrintLine($hp, $basex, $pght - $basey - $axisy - 100, $basex, $pght - $basey - $axisy + $sum);вертикальная линия - лево
_PrintLine($hp, $axisx + $basex - 175 - $right, $pght - $basey - $axisy - 100, $axisx + $basex - 175 - $right, $pght - $basey - $axisy + $sum) ;вертикальная линия - право
_PrintLine($hp, $basex, $pght - $basey - $axisy + $sum, $axisx + $basex - 175 - $right, $pght - $basey - $axisy + $sum);горизонтальная линия - низ
;заполнение шапки
$titlecol = StringSplit("Дата|Восст-ние|Заправка|Ремонт|Эксперсс|Фасовка", '|')
$line = $colth
$coordx = 70
$coordy = $pght - $basey - $axisy - 85
For $i = 1 To 5;вертикальные линии шапки
_PrintLine($hp, $basex + $line, $pght - $basey - $axisy, $basex + $line, $pght - $basey - $axisy - 100)
_PrintText($hp, $titlecol[$i], $basex + $coordx, $coordy)
$coordx += $colth
$line += $colth
Next
_PrintText($hp, $titlecol[6], $basex + $coordx, $coordy)
; рисуем сетку
_PrintSetLineWid($hp, 2); толщина линий
_PrintSetLineCol($hp, 0); цвет линий
$linedata = $colth
For $i = 1 To 5;вертикальные линии
_PrintLine($hp, $basex + $linedata, $pght - $basey - $axisy - 6, $basex + $linedata, $pght - $basey - $axisy + $sum)
$linedata += $colth
Next
$next = $sum / $linesum
For $i = 2 To UBound($printdata) - 1;горизонтальные линии
_PrintLine($hp, $basex, $pght - $basey - $axisy + $next, $axisx + $basex - 175 - $right, $pght - $basey - $axisy + $next)
$next += $sum / $linesum
Next
;заполняем таблицу
$coordyt = $pght - $basey - $axisy
$coordxt = $colth
For $i = 1 To UBound($printdata) - 1
_PrintText($hp, $printdata[$i][0], $basex + 30, $coordyt)
_PrintText($hp, $printdata[$i][1], $basex + 30 + $colth, $coordyt)
_PrintText($hp, $printdata[$i][2], $basex + 30 + $colth + $colth, $coordyt)
_PrintText($hp, $printdata[$i][3], $basex + 30 + $colth + $colth + $colth, $coordyt)
_PrintText($hp, $printdata[$i][4], $basex + 30 + $colth + $colth + $colth + $colth, $coordyt)
_PrintText($hp, $printdata[$i][5], $basex + 30 + $colth + $colth + $colth + $colth + $colth, $coordyt)
$coordyt += $sum / $linesum
Next
_PrintEndPrint($hp)
_PrintNewPage($hp);
_PrintDllClose($hp)
EndFunc ;==>_printdata