PAPER SIZE CUSTOM
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
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
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).
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).
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.
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.
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