PAPER SIZE CUSTOM

SARAGIOTTO 01/09/2023 15:39:10
#501695
Boa tarde pessoal
ja procurei mas nao achei nada especifico que me ajude
uso o vb6 e gostaria de saber como configuro o metodo PRINTER.PAPERSIZE para imprimir em tamanho personalizado
exemplo: altura 8 cm e largura 7,75
obrigado
SINCLAIR 01/09/2023 17:50:31
#501696
Colega,

Não ficou claro se você usa Crystal Reports, por exemplo. Se sim, basta criar o desenho do relatório dentro de papel formatado dentro deste tamanho, feito através do próprio Crystal Reports (versão 11.5, que é a versão que conheço e usei com VB6, aliás formando uma dobradinha muito boa).

Também é possível você criar um tamanho de papel personalizado nas configurações da impressora, através do Windows.

Ou (uma vez usei isto), imprimir um formulário. Eu precisava imprimir códigos de barras, isto foi em 2001, tem 23 anos passados. Eu só tinha como colocar os códigos de barras em um controle no formulário, não era uma fonte TTF. Então eu criei um formulário com o tamanho das etiquetas que eu precisava, eram etiquetas grandes, perto das dimensões que você falou, de 8 cm. Depois usava o PrintForm para imprimir o formulário e tudo certo (era uma impressora de etiquetas, como uma impressora não fiscal).
SAMUKA 01/09/2023 21:02:55
#501697
Boa noite

Acho que você está trabalhando com o Objeto Printer

Entre em "Propriedades de Servidor de Impressão" do Windows e crie uma formulário de acordo com sua necessidade.

Depois é necessário, buscar via código, todos os formulários cadastrados, lendo todos os Printer.PaperSize. Pra poder setar o formulário que criou.
EPISCOPAL 03/09/2023 23:02:57
#501699


Private Const CCHFORMNAME = 32
Private Const CCHDEVICENAME = 32
Private Const DM_FORMNAME As Long = &H10000
Private Const DM_ORIENTATION = &H1&
Private Const DM_MODIFY = 8
Private Const DM_IN_BUFFER = DM_MODIFY
Private Const DM_COPY = 2
Private Const DM_OUT_BUFFER = DM_COPY
Private Const FORM_NOT_SELECTED = 0
Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmg_Paper_Width As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Private Declare Function ResetDC _
Lib "gdi32" _
Alias "ResetDCA" (ByVal hDC As Long, _
lpInitData As Any) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function OpenPrinter _
Lib "winspool.drv" _
Alias "OpenPrinterA" (ByVal pPrinterName As String, _
phPrinter As Long, _
ByVal pDefault As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function DocumentProperties _
Lib "winspool.drv" _
Alias "DocumentPropertiesA" (ByVal hWnd As Long, _
ByVal hPrinter As Long, _
ByVal pDeviceName As String, _
pDevModeOutput As Any, _
pDevModeInput As Any, _
ByVal fMode As Long) As Long

Public Function SetDefaultPrinter(ByVal printername$, _
FormName As String, _
mOrientation, _
ByVal MyHwnd As Long) As Boolean
Dim nSize As Long
Dim pDevMode As DEVMODE
Dim PrinterHandle As Long
Dim hPrtDC As Long
Dim aDevMode() As Byte
hPrtDC = Printer.hDC
SetDefaultPrinter = FORM_NOT_SELECTED
If OpenPrinter(printername, PrinterHandle, 0&) Then
nSize = DocumentProperties(MyHwnd, PrinterHandle, printername, 0&, 0&, 0&)
ReDim aDevMode(1 To nSize)
nSize = DocumentProperties(MyHwnd, PrinterHandle, printername, aDevMode(1), 0&, _
DM_OUT_BUFFER)
Call CopyMemory(pDevMode, aDevMode(1), Len(pDevMode))
pDevMode.dmOrientation = mOrientation
pDevMode.dmFormName = FormName & Chr(0)
pDevMode.dmFields = DM_FORMNAME + DM_ORIENTATION
Call CopyMemory(aDevMode(1), pDevMode, Len(pDevMode))
nSize = DocumentProperties(MyHwnd, PrinterHandle, printername, aDevMode(1), aDevMode(1), _
DM_IN_BUFFER Or DM_OUT_BUFFER)
nSize = ResetDC(hPrtDC, aDevMode(1))
ClosePrinter (PrinterHandle)
SetDefaultPrinter = True
Else
End If
End Function


ChangePrinter = SetDefaultPrinter Printer.DeviceName, vbPRPSA4, vbPRORPortrait, Me.hWnd



A muito tempo atras eu usava esta função ..... mas esqueci como fazer para tipos customizados ...... vai estudando a função ai ...... outro dia te retorno mostrando como fazer ....
Faça seu login para responder