powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Oриентацию страницы на принтер
5 сообщений из 5, страница 1 из 1
Oриентацию страницы на принтер
    #39605576
Подскажите пожалуйста как выставить в программе ориентацию страницы на принтер, не очень удобно каждый раз менять вручную в настройках. у меня файл rtf.
...
Рейтинг: 0 / 0
Oриентацию страницы на принтер
    #39605590
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чем тут RTF ? Отправка на печать как происходит?
...
Рейтинг: 0 / 0
Oриентацию страницы на принтер
    #39605603
oShell = CREATEOBJECT("wscript.shell")
oShell.Run("WORDPAD "+_rtfFile+" /p ", 0, .T.)
...
Рейтинг: 0 / 0
Oриентацию страницы на принтер
    #39606203
#DEFINE IDOK 1
#DEFINE IDCANCEL 2

#DEFINE DM_OUT_BUFFER 2
#DEFINE DM_IN_BUFFER 8
#DEFINE DM_IN_PROMPT 4

#DEFINE DM_ORIENTATION 1
#DEFINE DM_PAPERSIZE 2
#DEFINE DM_PAPERLENGTH 4
#DEFINE DM_PAPERWIDTH 8

#DEFINE DMORIENT_PORTRAIT 1
#DEFINE DMORIENT_LANDSCAPE 2
#DEFINE OFFS_ORIENT_FLAG 41 && offset to Orientation flag
#DEFINE OFFS_ORIENT_VALUE 45 && offset to Orientation value

DO decl

PRIVATE hWindow, cPrinter, cDriver, cPort, hPrinter, nBufsize, cDevmode
hWindow = GetActiveWindow()
STORE "" TO cPrinter, cDriver, cPort
DO GetPrnName

hPrinter = 0
= OpenPrinter(cPrinter, @hPrinter, 0)
IF hPrinter = 0
= MessageB("Could not open default printer. ", 48, "Error")
RETURN
ENDIF

* being called this way the function returns DEVMODE buffer required size
nBufsize = DocumentProperties(hWindow, hPrinter, cPrinter,0,0,0)
cDevmode = Repli(Chr(0), nBufsize)

DO SetOrient WITH DMORIENT_LANDSCAPE
DO OpenDialog

= ClosePrinter(hPrinter)
* end of main

PROCEDURE SetOrient(nOrient)
* DEVMODE is adjusted programmatically
* DM_IN_PROMPT not used -- the dialog window is not shown
LOCAL dmFlags

* reading printer configuration
= DocumentProperties(hWindow, hPrinter, cPrinter,;
@cDevmode, 0, DM_OUT_BUFFER)

* setting ORIENTATION flag and value
dmFlags = buf2word(SUBSTR(cDevmode, OFFS_ORIENT_FLAG, 4))
dmFlags = BitOr(dmFlags, DM_ORIENTATION)
cDevmode = STUFF(cDevmode, OFFS_ORIENT_FLAG, 4, num2dword(dmFlags))
cDevmode = STUFF(cDevmode, OFFS_ORIENT_VALUE, 2, num2word(nOrient))

* using modified DEVMODE structure in the next call
= DocumentProperties(hWindow, hPrinter, cPrinter,;
@cDevmode, @cDevmode, DM_IN_BUFFER+DM_OUT_BUFFER)

PROCEDURE OpenDialog
* showing printer settings dialog
= DocumentProperties(hWindow, hPrinter, cPrinter,;
@cDevmode, @cDevmode, DM_IN_PROMPT+DM_IN_BUFFER+DM_OUT_BUFFER)

PROCEDURE GetPrnName
* retrieves default printer name from the Registry
LOCAL lcBuffer, lcPrinter, lcDriver, lcPort

lcBuffer = Repli(Chr(0), 120)
= GetProfileString("Windows", "Device", ",,,",;
@lcBuffer, Len(lcBuffer))

lcBuffer = STRTRAN(lcBuffer, Chr(0), "")

DIMEN arrPos[3]
arrPos[1] = AT(",", lcBuffer, 1)
arrPos[2] = AT(",", lcBuffer, 2)
arrPos[3] = Len(lcBuffer)

cPrinter = SUBSTR(lcBuffer, 1, arrPos[1]-1)
cDriver = SUBSTR(lcBuffer, arrPos[1]+1, arrPos[2]-arrPos[1]-1)
cPort = SUBSTR(lcBuffer, arrPos[2]+1, arrPos[3]-arrPos[2])
RELEASE arrPos

FUNCTION buf2dword (lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
BitLShift(Asc(SUBSTR(lcBuffer, 2,1)), 8) +;
BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +;
BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24)

FUNCTION buf2word (lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
Asc(SUBSTR(lcBuffer, 2,1)) * 256

FUNCTION num2dword (lnValue)
#DEFINE m0 256
#DEFINE m1 65536
#DEFINE m2 16777216
LOCAL b0, b1, b2, b3
b3 = Int(lnValue/m2)
b2 = Int((lnValue - b3*m2)/m1)
b1 = Int((lnValue - b3*m2 - b2*m1)/m0)
b0 = Mod(lnValue, m0)
RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
этот код записывает параметры принтера в файл, но не печатает пейзаж :

FUNCTION num2word(lnValue)
RETURN Chr(MOD(m.lnValue,256)) + CHR(INT(m.lnValue/256))

PROCEDURE decl
DECLARE INTEGER OpenPrinter IN winspool.drv;
STRING pPrinterName, INTEGER @phPrinter, INTEGER pDefault

DECLARE INTEGER GetProfileString IN kernel32;
STRING lpApp, STRING lpKey, STRING lpDefault,;
STRING @lpReturnedString, INTEGER nSize

DECLARE INTEGER ClosePrinter IN winspool.drv INTEGER hPrinter
DECLARE INTEGER GetActiveWindow IN user32
DECLARE INTEGER DeleteDC IN gdi32 INTEGER hdc

DECLARE INTEGER DocumentProperties IN winspool.drv;
INTEGER hWnd, INTEGER hPrinter, STRING pDeviceName,;
STRING @pDevModeOutput, STRING @pDevModeInput, INTEGER fMode
...
Рейтинг: 0 / 0
Oриентацию страницы на принтер
    #39606204
этот код записывает параметры принтера в файл, но не печатает пейзаж
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Oриентацию страницы на принтер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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