Clipper On Line • Ver Tópico - Painel de impressoras com HWGUI
Página 1 de 1

Painel de impressoras com HWGUI

MensagemEnviado: 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

MensagemEnviado: 11 Abr 2018 15:30
por asimoes
Segue exemplo:

cImpressora := Impressoras_SMF()

#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

MensagemEnviado: 11 Abr 2018 17:10
por gilbertosilverio
Simões,

Muito obrigado.

:-Y :-Y :-Y

Painel de impressoras com HWGUI

MensagemEnviado: 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...

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

MensagemEnviado: 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