Página 1 de 1
Painel de impressoras com HWGUI
Enviado: 11 Abr 2018 12:03
por gilbertosilverio
Ola amigos,
Estou alterando meu sistema de XHB 1.10+WVT+HGWUI para HB34+HWGUI, e estou enroscado com a parte da seleção de impressoras, tenho ela em modo carácter, mais com HWGUI estou enroscado.
Alguém poderia me disser como fazer, o teria algo ja pronto que poderia dispor um exemplo aqui no forum.
Grato.
Painel de impressoras com HWGUI
Enviado: 11 Abr 2018 15:30
por asimoes
Segue exemplo:
cImpressora := Impressoras_SMF()
Código: Selecionar todos
#include "common.ch"
#include "hwgui.ch"
#include "hbclass.ch"
#include "hbthread.ch"
THREAD STATIC aImpressorasSMF := {}
THREAD STATIC oThisformImp
FUNCTION Impressoras_SMF()
LOCAL cImpressora := ""
LOCAL oElemento, oDlg, nListImp:=1, oIconPrint, oLabel1, oButtonex1
oIconPrint := HIcon():AddFile("P:\GERAL\HARBOUR\IPRINTER2.ICO")
IF hb_FileExists( hb_GetEnv("TEMP") + [\] + "INIPRINTER.INI" )
cImpressora := hwg_GetIni( 'CONFIGURACAO', 'Impressora' , '', hb_GetEnv("TEMP") + [\] + "INIPRINTER.INI" )
ENDIF
aPrn := Win_PrinterList(.T., .F.)
IF Len( aImpressorasSMF ) = 0
FOR EACH oElemento IN aPrn
IF Empty( cImpressora )
IF oElemento[1] = Win_PrinterGetDefault()
nListImp := oElemento:__enumIndex()
ENDIF
ELSE
IF oElemento[1] = cImpressora
nListImp := oElemento:__enumIndex()
ENDIF
ENDIF
aAdd( aImpressorasSMF, oElemento[1] )
hwg_DoEvents()
NEXT
ELSE
FOR EACH oElemento IN aImpressorasSMF
IF oElemento = cImpressora
nListImp := oElemento:__enumIndex()
ENDIF
NEXT
ENDIF
IF ! Empty( cImpressora )
IF hb_aScan( aImpressorasSMF, cImpressora ) = 0
nListImp := hb_aScan( aImpressorasSMF, Win_PrinterGetDefault() )
ENDIF
ENDIF
INIT DIALOG oDlg TITLE "Seleção das Impressoras" ;
AT 0, 0 ;
SIZE 643,330 ;
FONT HFont():Add( 'Tahoma',0,-13,400,1252,,) ;
ICON oIconPrint ;
CLIPPER ;
NOEXIT ;
STYLE WS_POPUP + WS_CAPTION + WS_SYSMENU + DS_CENTER ;
ON INIT {|| oListImp:SetFocus()}
oThisformImp := oDlg
* SET KEY 0,VK_ESCAPE TO hwg_EndDialog()
@ 014,017 SAY oLabel1 CAPTION "Impressoras Instaladas (Informe a impressora para imprimir)" SIZE oDlg:nWidth,18
@ 012,042 GET LISTBOX oListImp ;
VAR nListImp ;
ITEMS aImpressorasSMF ;
SIZE 618,228 ;
ON DBLCLICK {|| SelecionaImpSMF( @cImpressora ) }
@ 014,280 BUTTONEX oButtonex1 ;
CAPTION "Imprimir" ;
SIZE 110,40 ;
ICON oIconPrint:handle ;
STYLE BS_CENTER + WS_TABSTOP ;
ON CLICK {|| SelecionaImpSMF( @cImpressora )}
@ 137,287 SAY oLabel2 CAPTION "Impressora padrão:" SIZE 116,18
@ 258,287 SAY oLabel3 CAPTION Win_PrinterGetDefault() ;
SIZE oDlg:nWidth,18
ACTIVATE DIALOG oDlg
oIconPrint:Release()
IF Empty( cImpressora )
cImpressora := Win_PrinterGetDefault()
ENDIF
IF ! Hb_FileExists( hb_GetEnv("TEMP") + [\] + "INIPRINTER.INI" )
hwg_WriteIni( 'MAIN' , 'Descricao' , 'IniPrint', hb_GetEnv("TEMP") + [\] + "INIPRINTER.INI" )
hwg_WriteIni( 'MAIN' , 'Versao' , "1.0", hb_GetEnv("TEMP") + [\] + "INIPRINTER.INI" )
hwg_WriteIni( 'CONFIGURACAO', 'Impressora' , cImpressora, hb_GetEnv("TEMP") + [\] + "INIPRINTER.INI" )
ELSE
hwg_WriteIni( 'CONFIGURACAO', 'Impressora' , cImpressora, hb_GetEnv("TEMP") + [\] + "INIPRINTER.INI" )
ENDIF
RETURN cImpressora
FUNCTION SelecionaImpSMF( cImpressora )
LOCAL nPos
nPos := oThisformImp:oListImp:Value
cImpressora := oThisformImp:oListImp:aItems[nPos]
oThisformImp:Close()
RETURN cImpressora
Painel de impressoras com HWGUI
Enviado: 11 Abr 2018 17:10
por gilbertosilverio
Simões,
Muito obrigado.
:-Y :-Y :-Y
Painel de impressoras com HWGUI
Enviado: 11 Abr 2018 17:24
por gilbertosilverio
Ola,
Não sei se existe algo para imprimir PDF direto pelo HWGUI, mais vai aqui minha dica...
Código: Selecionar todos
FUNCTION TESTE_DANFE_IMPRIMIR()
LOCAL oFile, oFileList
PRIVATE cComando, cIMPRESSORA:=[]
cDESTINO:='C:\NFe\NFe20180306'
Impressoras_SMF(@cIMPRESSORA)
HWG_MSGINFO(cIMPRESSORA)
oFileList := Directory( ALLTRIM(cDESTINO)+[\*.PDF], [D] )
FOR EACH oFile IN oFileList
cComando := [C:\Sumatra\sumatrapdf.exe -print-to "]+cIMPRESSORA+[" -silent ]+ALLTRIM(cDESTINO)+[\]+ALLTRIM(oFile[ F_NAME ])
xhbrun( cComando, .F. )
NEXT
RETURN NIL
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *>
FUNCTION xhbrun( cCommand, lWait, lBackG )
LOCAL hIn, hOut, hProc, nRet
hProc := HB_OpenProcess(cCommand, @hIn, @hOut, @hOut, lBackG)
IF hProc > 0
nRet := HB_ProcessValue(hProc, lWait)
ENDIF
FCLOSE(hProc)
FCLOSE(hIn)
FCLOSE(hOut)
RETURN nRet
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *>
Painel de impressoras com HWGUI
Enviado: 11 Abr 2018 18:21
por Fernando queiroz
eu estou usando assim , ta funcionando normal
WAPI_ShellExecute( NIL, "print", cPrefixo + "_8_AutorizadoPDF.PDF ", NIL,, NIL )
em testes sem a impressora instalada ele ate chama a instalação do wondows