powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать допустимые поля при печати отчета?
6 сообщений из 6, страница 1 из 1
Как узнать допустимые поля при печати отчета?
    #32587879
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если на вкладке "Page Setup" установить все Margins\'ы в ноль, то при сохранении настроек все Margins\'ы автоматически установятся в минимально допустимые значения размера полей на выбраном принтере. Эти минимально допустимые значения у разных принтеров разные.

Делаю отчет, который сильно зависит от допустимой области печати. Как узнать эти минимально допустимые поля?

Посмотрел здесь, подумал может это сработает:
Код: plaintext
1.
Private Sub TestMargins()\n    Dim PrtMipString As str_PRTMIP\n    Dim PM As type_PRTMIP\n    Dim rpt As Report\n\n    DoCmd.OpenReport "rptMyReport", acDesign\n    Set rpt = Reports("rptMyReport")\n    PrtMipString.strRGB = rpt.PrtMip\n    LSet PM = PrtMipString\n\n    PM.xLeftMargin =  0 \n    PM.yTopMargin =  0 \n    PM.xRightMargin =  0 \n    PM.yBotMargin =  0 \n\n    LSet PrtMipString = PM\n    rpt.PrtMip = PrtMipString.strRGB\n    \n    Set rpt = Nothing\n    \n    DoCmd.Close acReport, "rptMyReport", acSaveYes\n  \'---------------------------------------------------\n 
    \n    DoCmd.OpenReport "rptMyReport", acDesign\n    Set rpt = Reports("rptMyReport")\n    PrtMipString.strRGB = rpt.PrtMip\n    LSet PM = PrtMipString\n\n    Debug.Print PM.xLeftMargin /  1440 \n    Debug.Print PM.yTopMargin /  1440 \n    Debug.Print PM.xRightMargin /  1440 \n    Debug.Print PM.yBotMargin /  1440 \n    \n    Set rpt = Nothing\n    DoCmd.Close acReport, "rptHeightGauge", acSaveNo\nEnd Sub\n
Ан нет! В окне отладки всё в нолях, никакой автоматической коррекции.

Подскажите, Люди Добрые.

P.S. На крайняк посоветуйте какие поля надо установить чтобы работало на любом принтере. Нужны форматы только A4 и Letter.
...
Рейтинг: 0 / 0
Как узнать допустимые поля при печати отчета?
    #32587908
С помощью API CreateDC и GetDeviceCaps можно получить максимальный размер области печати и минимальный левый и верхний отступ для указанного устройства.
Вот кусочек:
PhysWidth = apiGetDeviceCaps(hdc, PHYSICALWIDTH)
PhysHeight = apiGetDeviceCaps(hdc, PHYSICALHEIGHT)
MarginLeft = apiGetDeviceCaps(hdc, PHYSICALOFFSETX)
MarginTop = apiGetDeviceCaps(hdc, PHYSICALOFFSETY)

Не ошибетесь, если для лазерного принтера дадите отступы по 7мм.
Для струйного нижний (правый при альбомной ориентации) - 15 мм. Может есть и меньше - не встречал.
...
Рейтинг: 0 / 0
Как узнать допустимые поля при печати отчета?
    #32587924
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Попробую.

Кстати, может знает кто:
Почему на разных принтерах рисуются линии различной толщины при использовании метода Line?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Report_Page()
    Dim sngTop As Single, sngLeft As Single
    Dim sngWidth As Single, sngHeight As Single
    
    Me.ScaleMode =  7    'сантиметры
 
    Me.DrawWidth =  4 

    sngTop = Me.ScaleTop +  6  
    sngLeft = Me.ScaleLeft +  1 
    sngWidth =  0 
    sngHeight =  14 . 8 

    Me.Line (sngLeft, sngTop)-Step(sngWidth, sngHeight)
End Sub
Один и тот же кусок кода выглядит по-разному на на разных принтерах.
Порой рисуется линия аж до 2мм толщиной.
...
Рейтинг: 0 / 0
Как узнать допустимые поля при печати отчета?
    #32587931
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )
Для струйного нижний (правый при альбомной ориентации) - 15 мм. Может есть и меньше - не встречал.

у современных струйников бывает и меньше - пример на экране
+ фотопринтеры "мажут" весь лист
...
Рейтинг: 0 / 0
Как узнать допустимые поля при печати отчета?
    #32589527
Толщина линии задается в пикселах, а соотношение Pixels/point зависит от разрешения. Для разрешения 600 dpi это 2.4, для 300 dpi - 1,2. Линия будет в 2 раза толще. Нужно корректировать толщину с учетом коэффициента.
Узнать разрешение можно из структуры DEVMODE, а можно и проще:

Const conDefaultKoeff = 2.4

Me.ScaleMode = 3
sglKoeff = Me.ScaleWidth
Me.ScaleMode = 2
sglKoeff = sglKoeff / Me.ScaleWidth
MsgBox "Pixels/point " & sglKoeff

Me.DrawWidth = 4 * sglKoeff / conDefaultKoeff

Причем для горизнтальных и вертикальных линий могут быть различные коэффициенты (например 600 dpi / 300 dpi)
...
Рейтинг: 0 / 0
Как узнать допустимые поля при печати отчета?
    #32590337
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер!!! Спасибо Огромное!!!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать допустимые поля при печати отчета?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]