Em forma de exemplo, irei demonstrar uma simples impressão de etiqueta usando a função MSCBPrinter.
Permite realizar as configurações da impressora, que darão ao programador a habilidade de determinar as características de impressão, definidas pelos parâmetros abaixo.
Sintaxe:
MSCBPrinter Configura Impressora ( [ cModelPrt ] [ cPorta ] [ nDensidade ] [ nTamanho ] [ lSrv ] [ nPorta ] [ cServer ] [ cEnv ] [ nMemoria ] [ cFila ] [ lDrvWin ] [ cPathSpool ] )
#include "rwmake.ch" User Function Etiqueta() *********************** // Declaração de variáveis utilizadas no programa SetPrvt("CPERG,CCOMBO,AITENS,VQETIQ,cCidade,nCount,VNFISCAL,VNR") SetPrvt("cPed,VCLIENTE,cCliEnt,cSerie,nLin,nCol,lPrim,cEndEnt,VQtdEmb") SetPrvt("VCONF,cNome,cEntrega,cNomeTra, VDTAVAL,VSAIR,_CPORTA,_SALIAS,AREGS") SetPrvt("I,J,qQetiq") cCombo := "S4M" aItens := {"ELTRON","S4M","ZEBRA"} VNFISCAL := Space(9) VProduto :="" cPed := Space(6) VCliente :=Space(30) cEndEnt := Space(30) VQtdEmb := "" cNomeTra := Space(30) VSair := .f. VQetiq := 1 Vcont := 0 While vSair == .f. @ 003,001 TO 355,450 DIALOG oDlg1 TITLE "Impressão de Etiquetas -Expedição" @ 135,045 BUTTON "_Imprimir" SIZE 30,20 ACTION Impetiq() @ 135,128 BUTTON "_Sair" SIZE 30,20 ACTION sair() @ 005,003 To 030,200 @ 014,015 Say "Volumes:" @ 014,085 Get VQetiq SIZE 30,20 Pict "9999" @ 042,015 Say "Nota Fiscal:" @ 042,065 Get VNFISCAL SIZE 50,20 Picture "@!" F3 "SF2" VALID FillDSF2(VNFISCAL) @ 058,015 Say "Pedido:" @ 058,065 Get cPed SIZE 50,20 @ 074,015 Say "Transportadora:" @ 074,065 Get cNomeTra SIZE 100,20 @ 090,015 Say "Cliente:" @ 090,065 Get cNome SIZE 100,20 @ 106,015 Say "Endereco:" @ 106,065 Get cEntrega SIZE 100,20 @ 122,090 ComboBox cCombo Items aItens SIZE 30,50 ACTIVATE DIALOG oDlg1 CENTERED EndDo RETURN Static Function Impetiq() ************************* If cCombo =="ELTRON" _cPorta := "ELTRON" ElseIf cCombo =="S4M" _cPorta := "S4M" ElseIf cCombo =="ZEBRA" _cPorta := "LPT3" EndIf MSCBPRINTER("S4M","LPT1",,,.F.,,,,,,.T.) for nCount :=1 to VQetiq MSCBBEGIN(1,4) MSCBSAY(08,10,"NF."+ VNFISCAL+" PV.: "+cPed,"N","F","002,002") MSCBSAY(08,15,"Cliente: "+cNome,"N","F","002,002") MSCBSAY(08,20,"End: "+cEntrega,"N","F","002,002") MSCBSAY(08,25,"Cidade.: "+cCidade,"N","F","002,002") MSCBSAY(08,30,"Trans: "+cNomeTra ,"N","F","002,002") MSCBSAY(08,35,"Volumes: "+Alltrim(STR(nCount))+" de " +Alltrim(STR(VQetiq)) ,"N","F","002,002") MSCBEND() Next(nCount) MSCBCLOSEPRINTER() Return Static Function Sair() ********************** Close(oDlg1) vSair := .t. Return Static Function FillDSF2(_cDoc) sf2->(dbsetorder(1)) sf2->(dbseek(xfilial("SF2") + _cDoc )) cCliente := sf2->f2_cliente cSerie := sf2->f2_serie cPed := posicione("SC9",6,xfilial("SC9")+cSerie+_cDoc,"C9_PEDIDO") cNome := posicione("SA1",1,xfilial("SA1")+sf2->f2_cliente+sf2->f2_loja,"A1_Nreduz") cEntrega := posicione("SA1",1,xfilial("SA1")+sf2->f2_cliente+sf2->f2_loja,"A1_END") cNomeTra := posicione("SA4",1,xfilial("SA4")+sf2->f2_transp,"A4_NOME") cCidade := posicione("SA1",1,xfilial("SA1")+sf2->f2_cliente+sf2->f2_loja,"A1_MUN") return()