como imprimir com xharbour
Moderador: Moderadores
-
joseduarte
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 27 Jun 2005 13:38
- Localização: São Paulo
como imprimir com xharbour
mandei um tópico perguntando sobre como usar recursos gráficos com o xharbour no modo console, e o vagner me respondeu, e me desanimou ao mesmo tempo, mas agora tenho outra dúvida, quando usamos o clipper, enviar relatórios para impressoras for windows, usb, etc, é um parto, temos que fazer malabarismos para conseguir imprimir, ou usar produtos de terceiros (as vezes pirata, o que não ficaria correto), então pergunto, como fazer para em um programa xharbour imprimir em qualquer impressora, seja usb ligada ao micro, seja uma impressora de uma rede, etc. Obrigado !!!!
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
xHarbour, MiniGUI
ARAGUARI-MG, 5 de janeiro de 2006.
Prezado José Duarte,
Baixe um simples exemplo, "Projeto_0.0.20.exe" no link abaixo:
http://www.gransoft.com/download/minigui
xHarbour, MiniGUI, etc.
SEMPRE utilizarei matriciais (baixo custo de materiais) e Jato de tinta/toner...
Atenciosamente,
Janis Peters Grants.
Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br
Prezado José Duarte,
Baixe um simples exemplo, "Projeto_0.0.20.exe" no link abaixo:
http://www.gransoft.com/download/minigui
xHarbour, MiniGUI, etc.
SEMPRE utilizarei matriciais (baixo custo de materiais) e Jato de tinta/toner...
Atenciosamente,
Janis Peters Grants.
Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br
-
joseduarte
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 27 Jun 2005 13:38
- Localização: São Paulo
Janis, obrigado pelo exemplo, porém, por me expressar mal, acabei não falando corretamente a minha dúvida.
Eu quero imprimir em qualquer impressora, seja local ou de rede, seja usb ou não, mas usando o xharbour no modo console, sem nenhuma lib grafica junto, só xharbour em modo caracter, pois pretendo fazer um fonte para rodar tanto no windows como no linux, e como não tem lib grafica 100% pronta para rodar no linux, o melhor, na minha opinião, é usar no modo caracter mesmo. Obrigado !!!
Eu quero imprimir em qualquer impressora, seja local ou de rede, seja usb ou não, mas usando o xharbour no modo console, sem nenhuma lib grafica junto, só xharbour em modo caracter, pois pretendo fazer um fonte para rodar tanto no windows como no linux, e como não tem lib grafica 100% pronta para rodar no linux, o melhor, na minha opinião, é usar no modo caracter mesmo. Obrigado !!!
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Caro JoseDuarte,
a classe Win32prn efetua a impressão da forma e (em qualquer) impressora que você quiser, inclusive USB.
Ela simplesmente pega as configurações da impressora e o texto produzido, converte o mesmo em pixel´s e monta um device context para impressão.
O problema, e estou trabalhando nisso, é a impossilidade de visualização do trabalho (por enquanto) - Estou tendo dificuldade com a linguagem C.
Em um tópico anterior, para quem pretende trabalhar com texto puro, com utilização da classe win32prn dei dicas para montar um preview capenga (mas que funciona perfeitamente, especialmente com texto).
Todavia, em virtude de visual, estou simplesmente criando os relatórios e convertendo os mesmos numa página html e exibindo a mesma pelo browse padrão do computador.
Nessa situação, sem perda de performace (os browsers são rápidos e a página html gerada localmente é puro texto), o usuário vê o que vai ser impresso e pode até copiar este relatório para um outro aplicativo (word, 602Txt, etc.).
Eu também gosto do estilo console (texto), mas um relatório visualizado da forma mais próxima do que vai ser impresso (true type) é bem melhor.
Não brigue com o Windows, apenas use o que ele tem de bom!
Espero ter ajudado.
PS: nos sources do xHarbour, há exemplo de como imprimir arquivos utilizando a classe Win32Prn. Não deixe de ver.
MarceloG
a classe Win32prn efetua a impressão da forma e (em qualquer) impressora que você quiser, inclusive USB.
Ela simplesmente pega as configurações da impressora e o texto produzido, converte o mesmo em pixel´s e monta um device context para impressão.
O problema, e estou trabalhando nisso, é a impossilidade de visualização do trabalho (por enquanto) - Estou tendo dificuldade com a linguagem C.
Em um tópico anterior, para quem pretende trabalhar com texto puro, com utilização da classe win32prn dei dicas para montar um preview capenga (mas que funciona perfeitamente, especialmente com texto).
Todavia, em virtude de visual, estou simplesmente criando os relatórios e convertendo os mesmos numa página html e exibindo a mesma pelo browse padrão do computador.
Nessa situação, sem perda de performace (os browsers são rápidos e a página html gerada localmente é puro texto), o usuário vê o que vai ser impresso e pode até copiar este relatório para um outro aplicativo (word, 602Txt, etc.).
Eu também gosto do estilo console (texto), mas um relatório visualizado da forma mais próxima do que vai ser impresso (true type) é bem melhor.
Não brigue com o Windows, apenas use o que ele tem de bom!
Espero ter ajudado.
PS: nos sources do xHarbour, há exemplo de como imprimir arquivos utilizando a classe Win32Prn. Não deixe de ver.
MarceloG
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
JoseDuarte, completando,
eu respeito muito a posição do Vagner, mas pelo que andei verificando, com uso das apis do windows é possível fazer muito coisa em modo texto.
É lógico que, e se você gosta da Jane (aquela do Tarzan) de tanga, não pretende vê-la num "taierzinho" preto né?
Assim, modo texto é texto, e modo gráfico é gráfico.
Conforme exposição anterior, você deve apenas utilizar os recursos realmente bons dessa estrutura de informação, e não descaracterizar um "projeto conservador" em modo texto.
Com o uso da api do Windows, a classe Win32Prn cria um DC, então é so pegar o DC, convertê-lo num bitmap e exibí-lo numa janela criada pelo windows.
A impressão!? Deixa pra lá. A turma do Bill (Gates) já cuidiou disso e sabe imprimir o DC ou o bitmap em qualquer situação e na hora que você madar.
Ah! O Vagner ainda deu a dica do WMF, que também é uma alternativa a ser estudada e, para delírio de todos, a consagração da classe Win32Prn imprimindo e exibindo o que você quiser.
Sem desânimo tá?
MarceloG
eu respeito muito a posição do Vagner, mas pelo que andei verificando, com uso das apis do windows é possível fazer muito coisa em modo texto.
É lógico que, e se você gosta da Jane (aquela do Tarzan) de tanga, não pretende vê-la num "taierzinho" preto né?
Assim, modo texto é texto, e modo gráfico é gráfico.
Conforme exposição anterior, você deve apenas utilizar os recursos realmente bons dessa estrutura de informação, e não descaracterizar um "projeto conservador" em modo texto.
Com o uso da api do Windows, a classe Win32Prn cria um DC, então é so pegar o DC, convertê-lo num bitmap e exibí-lo numa janela criada pelo windows.
A impressão!? Deixa pra lá. A turma do Bill (Gates) já cuidiou disso e sabe imprimir o DC ou o bitmap em qualquer situação e na hora que você madar.
Ah! O Vagner ainda deu a dica do WMF, que também é uma alternativa a ser estudada e, para delírio de todos, a consagração da classe Win32Prn imprimindo e exibindo o que você quiser.
Sem desânimo tá?
MarceloG
-
joseduarte
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 27 Jun 2005 13:38
- Localização: São Paulo
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
O modo console ou modo janela são apenas a capa do sistema, claro que, reproduzir o relatorio grafico na tela em modo console, vc precisaria de uma lib grafica para o mesmo, coisa que acho não vai existir nem tão cedo, pois se for exibir uma tela em modo janela seu programa será minimizado, enfim, independente de modo texto ou não, vc poderá utilizar todos os recursos do sistema operacional, com esta pequena limitação de que o que era visual não aparecerá no modo console por ser modo texto.
O PRWIN foi feito usando a classe WIN32PRN.
O PRWIN foi feito usando a classe WIN32PRN.
-
joseduarte
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 27 Jun 2005 13:38
- Localização: São Paulo
- Antonio
- Usuário Nível 3

- Mensagens: 347
- Registrado em: 14 Ago 2003 17:33
- Localização: Sao Paulo - SP
- Contato:
Em \xharbour\source\rtl existem os fontes da classe win32prn, ja a documentação, acredito não existir ainda.
Teste da Classe:
Teste da Classe:
Código: Selecionar todos
#define FORM_A4 9
#define PS_SOLID 0
#define RGB( nR,nG,nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) )
#define BLACK RGB( 0x0 ,0x0 ,0x0 )
#define BLUE RGB( 0x0 ,0x0 ,0x85 )
#define GREEN RGB( 0x0 ,0x85,0x0 )
#define CYAN RGB( 0x0 ,0x85,0x85 )
#define RED RGB( 0x85,0x0 ,0x0 )
#define MAGENTA RGB( 0x85,0x0 ,0x85 )
#define BROWN RGB( 0x85,0x85,0x0 )
#define WHITE RGB( 0xC6,0xC6,0xC6 )
FUNCTION Main()
LOCAL nPrn:=1, cBMPFile:= SPACE( 40 )
LOCAL aPrn:= GetPrinters()
LOCAL GetList:= {}
CLS
IF EMPTY(aPrn)
Alert("No printers installed - Cannot continue")
QUIT
ENDIF
DO WHILE !EMPTY(nPrn)
CLS
@ 0,0 SAY 'Win32Prn() Class test program. Choose a printer to test'
@ 1,0 SAY 'Bitmap file name' GET cBMPFile PICT '@!K'
READ
@ 2,0 TO maxRow(),maxCol()
nPrn:= ACHOICE(3,1,maxRow()-1,maxCol()-1,aPrn,.T.,,nPrn)
IF !EMPTY(nPrn)
PrnTest(aPrn[nPrn], cBMPFile)
ENDIF
ENDDO
RETURN(NIL)
STATIC FUNCTION PrnTest(cPrinter, cBMPFile)
LOCAL oPrinter:= Win32Prn():New(cPrinter), aFonts, x, nColFixed, nColTTF, nColCharSet
oPrinter:Landscape:= .F.
oPrinter:FormType := FORM_A4
oPrinter:Copies := 1
IF !oPrinter:Create()
Alert("Cannot Create Printer")
ELSE
IF !oPrinter:startDoc('Win32Prn(Doc name in Printer Properties)')
Alert("StartDoc() failed")
ELSE
oPrinter:SetPen(PS_SOLID, 1, RED)
oPrinter:Bold(800)
oPrinter:TextOut(oPrinter:PrinterName+': MaxRow() = '+STR(oPrinter:MaxRow(),4)+' MaxCol() = '+STR(oPrinter:MaxCol(),4))
oPrinter:Bold(0) // Normal
oPrinter:NewLine()
oPrinter:TextOut(' Partial list of available fonts that are available for OEM_')
oPrinter:NewLine()
oPrinter:UnderLine(.T.)
oPrinter:Italic(.T.)
// oPrinter:SetFont('Courier New',7,{3,-50}) // Compressed print
nColFixed:= 40 * oPrinter:CharWidth
nColTTF := 48 * oPrinter:CharWidth
nColCharSet := 60 * oPrinter:CharWidth
oPrinter:TextOut('FontName')
oPrinter:SetPos(nColFixed)
oPrinter:TextOut('Fixed?')
oPrinter:SetPos(nColTTF)
oPrinter:TextOut('TrueType?')
oPrinter:SetPos(nColCharset)
oPrinter:TextOut('CharSet#',.T.)
oPrinter:NewLine()
oPrinter:Italic(.F.)
oPrinter:UnderLine(.F.)
aFonts:= oPrinter:GetFonts()
oPrinter:NewLine()
FOR x:= 1 TO LEN(aFonts) STEP 2
oPrinter:CharSet(aFonts[x,4])
IF oPrinter:SetFont(aFonts[x,1]) // Could use "IF oPrinter:SetFontOk" after call to oPrinter:SetFont()
IF oPrinter:FontName == aFonts[x,1] // Make sure Windows didn't pick a different font
oPrinter:TextOut(aFonts[x,1])
oPrinter:SetPos(nColFixed)
oPrinter:TextOut(IIF(aFonts[x,2],'Yes','No'))
oPrinter:SetPos(nColTTF)
oPrinter:TextOut(IIF(aFonts[x,3],'Yes','No'))
oPrinter:SetPos(nColCharSet)
oPrinter:TextOut(STR(aFonts[x,4],5))
oPrinter:SetPos(oPrinter:LeftMargin, oPrinter:PosY + (oPrinter:CharHeight*2))
IF oPrinter:PRow() > oPrinter:MaxRow() - 10 // Could use "oPrinter:NewPage()" to start a new page
EXIT
ENDIF
ENDIF
ENDIF
oPrinter:Line(0, oPrinter:PosY+5, 2000, oPrinter:PosY+5)
NEXT x
oPrinter:SetFont('Lucida Console',8,{3,-50}) // Alternative Compressed print
oPrinter:CharSet(0) // Reset default charset
oPrinter:Bold(800)
oPrinter:NewLine()
oPrinter:TextOut('This is on line'+STR(oPrinter:Prow(),4)+', Printed bold, ' )
oPrinter:TextOut(' finishing at Column: ')
oPrinter:TextOut(STR(oPrinter:Pcol(),4))
oPrinter:SetPrc(oPrinter:Prow()+3, 0)
oPrinter:Bold(0)
oPrinter:TextOut("Notice: UNDERLINE only prints correctly if there is a blank line after",.T.)
oPrinter:TextOut(" it. This is because of ::LineHeight and the next line",.T.)
oPrinter:TextOut(" printing over top of the underline. To avoid this happening",.T.)
oPrinter:TextOut(" you can to alter ::LineHeight or use a smaller font")
oPrinter:NewLine()
oPrinter:NewLine()
oPrinter:SetFont('Lucida Console',18, 0) // Large print
oPrinter:SetColor( GREEN )
oPrinter:TextOut("Finally some larger print")
oPrinter:Box( 0, oPrinter:PosY+100, 100, oPrinter:PosY+200)
oPrinter:Arc(200, oPrinter:PosY+100, 300, oPrinter:PosY+200)
oPrinter:Ellipse(400, oPrinter:PosY+100, 500, oPrinter:PosY+200)
oPrinter:FillRect(600, oPrinter:PosY+100, 700, oPrinter:PosY+200, RED)
// To print a barcode;
// Replace 'BCod39HN' with your own bar code font or any other font
// oPrinter:TextAtFont( oPrinter:MM_TO_POSX( 30 ) , oPrinter:MM_TO_POSY(60 ), '1234567890', 'BCod39HN', 24, 0 )
//
PrintBitMap( oPrinter, cBMPFile )
oPrinter:EndDoc()
ENDIF
oPrinter:Destroy()
ENDIF
RETURN(NIL)
procedure PrintBitMap( oPrn, cBitFile )
LOCAL oBMP
IF EMPTY( cBitFile )
*
ELSEIF !FILE( cBitFile )
Alert( cBitFile + ' not found ' )
ELSE
oBMP:= Win32BMP():new()
IF oBmp:loadFile( cBitFile )
oBmp:Draw( oPrn, { 200,200, 2000, 1500 } )
// Note: Can also use this method to print bitmap
// oBmp:Rect:= { 200,2000, 2000, 1500 }
// oPrn:DrawBitMap( oBmp )
ENDIF
oBMP:Destroy()
ENDIF
RETURN
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
como imprimir com xharbour
olá Gente!
Como vocês, também sou um clippeiro apaixonado. Acontece que depois que consegui migrar para HMG 3.0.35, percebi que se não estiver uma impressora LPT1 conectada não é possível usar o DOSPRN (ou DOS2USB que algumas pessoas usam), pois o sistema percebe que não tem nada ligado na LPT1 então a impressão não é liberada. Uso a função ISPRINTER() pra fazer essa verificação.
Então, preciso de algo prático para fazer essa migração também, pois os exemplos do Itamar que peguei no tópico https://pctoledo.org/forum/viewto ... 956#p96956 não rodaram e deram erro PRINTFILERAW (duplicidade nas libs HBWIN LIBHMG).
Enfim, se não conseguir fazer isso funcionar,como já programa um pouco em DELPHI 7 e estou aprendendo DELPHI XE3 sairei definitivamente do clipper/harbour, pois além desse problema aqui relatado, encontro também a dificuldade de migração de CONSOLE para GRÁFICO pois temos que mudar os códigos originais em muito e não temos uma IDE de fácil manuseio.
Só não fiz ainda, pois encontrei outro problema que está impedindo isso:
- Meus aplicativos estão usando DBF/NTX e não DBF/CDX. Um amigo aqui da "internet" me mandou uns exemplos de como migrar de DBF/NTX para DBF/CDX e achei bem interessante, mas, é muito complexo e terei que fazer as mudanças nos códigos originais e isso é muito complexo(como disse).
- Outra opção seria instalar um componente que lesse DBF/NTX no DELPHI, mas, isso não deu certo. Testei um montão de componentes tDBF (é um deles) mas, nada.
Então, alguém aqui, tem alguma coisa prática para imprimir no clipper/harbour?
OBS:
1 - lembrando que uso a HMG 3.0.35 e estou aprendendo a 3.0.46
2 - tem que ser algo semelhante e de fácil compreensão ao que já usamos (SET DEVICE TO PRINTER / SET PRINTER TO LPT1).
3 - eliminar os aplicativos externos como DOS2USB, DOSPRN, PRINTFIL, etc...
Vlw professores.
Enfim,
agradeço à sua atenção!
Como vocês, também sou um clippeiro apaixonado. Acontece que depois que consegui migrar para HMG 3.0.35, percebi que se não estiver uma impressora LPT1 conectada não é possível usar o DOSPRN (ou DOS2USB que algumas pessoas usam), pois o sistema percebe que não tem nada ligado na LPT1 então a impressão não é liberada. Uso a função ISPRINTER() pra fazer essa verificação.
Então, preciso de algo prático para fazer essa migração também, pois os exemplos do Itamar que peguei no tópico https://pctoledo.org/forum/viewto ... 956#p96956 não rodaram e deram erro PRINTFILERAW (duplicidade nas libs HBWIN LIBHMG).
Enfim, se não conseguir fazer isso funcionar,como já programa um pouco em DELPHI 7 e estou aprendendo DELPHI XE3 sairei definitivamente do clipper/harbour, pois além desse problema aqui relatado, encontro também a dificuldade de migração de CONSOLE para GRÁFICO pois temos que mudar os códigos originais em muito e não temos uma IDE de fácil manuseio.
Só não fiz ainda, pois encontrei outro problema que está impedindo isso:
- Meus aplicativos estão usando DBF/NTX e não DBF/CDX. Um amigo aqui da "internet" me mandou uns exemplos de como migrar de DBF/NTX para DBF/CDX e achei bem interessante, mas, é muito complexo e terei que fazer as mudanças nos códigos originais e isso é muito complexo(como disse).
- Outra opção seria instalar um componente que lesse DBF/NTX no DELPHI, mas, isso não deu certo. Testei um montão de componentes tDBF (é um deles) mas, nada.
Então, alguém aqui, tem alguma coisa prática para imprimir no clipper/harbour?
OBS:
1 - lembrando que uso a HMG 3.0.35 e estou aprendendo a 3.0.46
2 - tem que ser algo semelhante e de fácil compreensão ao que já usamos (SET DEVICE TO PRINTER / SET PRINTER TO LPT1).
3 - eliminar os aplicativos externos como DOS2USB, DOSPRN, PRINTFIL, etc...
Vlw professores.
Enfim,
agradeço à sua atenção!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
como imprimir com xharbour
Vamos por partes,
Código: Selecionar todos
cPorta := PrnGetPort()
cPrinter := PrinterPortToName( cPorta )
if empty(cPrinter)
cPrinter := PrinterPortToName( "USB002" )
if empty(cPrinter)
cPrinter := PrinterPortToName( "USB001" )
endif
endif
Grave seu texto em MINUTA.TXT ou a gosto.
PrintFileRaw( cPrinter, TrueName("MINUTA.TXT"), "Impressão de Vendas" )
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
como imprimir com xharbour
Passar a .CDX sem segredos:
LIBS a Incorporar:
Código: Selecionar todos
ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT
REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
FUNCTION Main()
RDDSETDEFAULT( "DBFCDX" )
SET CENTURY ON
SET DATE BRITISH
SET EPOCH TO YEAR( DATE() ) - 30
SET SOFTSEEK OFF
SET WRAP ON
SETCANCEL( .F. )
SET CONFIRM OFF
SET DELETED ON
SET ESCAPE ON
SET EXCLUSIVE OFF
SET MULTIPLE OFF
HB_LANGSELECT("PT")
HB_SETCODEPAGE( "PT850" )
Código: Selecionar todos
\xHarbour\lib\rtl.lib +
\xHarbour\lib\vm.lib +
\xHarbour\lib\ct.lib +
\xHarbour\lib\gtgui.lib +
\xHarbour\lib\lang.lib +
\xHarbour\lib\macro.lib +
\xHarbour\lib\rdd.lib +
\xHarbour\lib\dbfntx.lib +
\xHarbour\lib\dbfcdx.lib +
\xHarbour\lib\dbffpt.lib +
\xHarbour\lib\hbsix.lib +
\xHarbour\lib\Debug.lib +
\xHarbour\lib\common.lib +
\xHarbour\lib\pp.lib +
\xHarbour\lib\HbComm.lib +
\xHarbour\lib\pcrepos.lib +
\xHarbour\lib\codepage.Lib +
\xHarbour\lib\cw32.lib +
\xHarbour\lib\HbZip.lib +
\xHarbour\lib\ZLib.lib +
\xHarbour\lib\Tip.lib +
\Borland\Bcc55\lib\cw32.lib +
\Borland\Bcc55\lib\import32.lib +
\Borland\Bcc55\lib\uuid.lib +
\Borland\Bcc55\lib\psdk\odbc32.lib +
\Borland\Bcc55\lib\psdk\rasapi32.lib +
\Borland\Bcc55\lib\psdk\nddeapi.lib +
\Borland\Bcc55\lib\psdk\msimg32.lib +
\Borland\Bcc55\lib\psdk\psapi.lib +
\Borland\Bcc55\lib\psdk\Shell32.lib +
\Borland\Bcc55\lib\psdk\iphlpapi.lib
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
como imprimir com xharbour
Prezado professor, infelizmente deu a seguinte tela de erro:Kapiaba escreveu:Vamos por partes,
Código: Selecionar todos
cPorta := PrnGetPort() cPrinter := PrinterPortToName( cPorta ) if empty(cPrinter) cPrinter := PrinterPortToName( "USB002" ) if empty(cPrinter) cPrinter := PrinterPortToName( "USB001" ) endif endif Grave seu texto em MINUTA.TXT ou a gosto. PrintFileRaw( cPrinter, TrueName("MINUTA.TXT"), "Impressão de Vendas" )
Código: Selecionar todos
Harbour 3.2.0dev (Rev. 18443)
Copyright (c) 1999-2012, http://harbour-project.org/
C:\MVinfo\hb32\migrar\SiCCOSV\SiCCOSV.343\sci10000\pci10000.prg: In function 'HB_FUN_HB_GETIMAGESIZE':
C:\MVinfo\hb32\migrar\SiCCOSV\SiCCOSV.343\sci10000\pci10000.prg:3028:4: warning: implicit declaration of function 'GetImageSize' [-Wimplicit-function-declaration]
C:/MVinfo/hmg.3.0.46/hmg.3.0.46/harbour/lib/win/mingw/libxhb.a(xhbprn.o):xhbprn.c:(.text+0x10): multiple definition of `HB_FUN_GETDEFAULTPRINTER'
C:/MVinfo/hmg.3.0.46/hmg.3.0.46/lib/libhmg.a(c_controlmisc.o):c_controlmisc.c:(.text+0x2be0): first defined here
C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10043.o:pci10043.c:(.data+0x1758): undefined reference to `HB_FUN_PRNGETPORT'
collect2: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
gcc.exe C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10000.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/dci10000.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/dci10001.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/dci10002.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/enviarerro.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/ext.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/impresso.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10001.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10002.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10003.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10004.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10005.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10006.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10007.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10008.o C:/Users/wal/AppData/Local/Temp/hbmk_ahurnf.dir/pci10009.o C:/Users/wal/AppData/Local/Temp/hbmk_
(...)Código: Selecionar todos
if .not. isprinter ()
cPorta := PrnGetPort()
cPrinter := PrinterPortToName( cPorta )
if empty(cPrinter)
cPrinter := PrinterPortToName( "USB002" )
if empty(cPrinter)
cPrinter := PrinterPortToName( "USB001" )
endif
endif
// Grave seu texto em MINUTA.TXT ou a gosto.
PrintFileRaw( cPrinter, TrueName("PCI10043"), "Impressão de OSV " )
else
do while (lastkey () <> K_ESC .and. .not. isprinter ())
// if .not. CONFIRMA ('A impressora est pronta')
if .not. CONFIRMA ('A impressora está pronta','SiCCoSV - Problema de Comunicação com a(s) Impressora(s)')
* Abandona o programa
keyboard chr (K_ESC)
inkey ()
exit
endif
enddo
endif
O que pode estar errado? lembrando que uso a HMG 3.0.35 e 3.0.46 (experimentando).
vlw
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
como imprimir com xharbour
Putz! que mangue!
Vc está usando Mingw, o Kapiaba passou libs do BCC...
Saudações,
Itamar M. Lins Jr.
Vc está usando Mingw, o Kapiaba passou libs do BCC...
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Passar a .CDX sem segredos
Prezado professor "kapiaba", bom dia!Kapiaba escreveu:Passar a .CDX sem segredos:
LIBS a Incorporar:Código: Selecionar todos
ANNOUNCE RDDSYS REQUEST DBFCDX, DBFFPT REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto REQUEST HB_LANG_PT REQUEST HB_CODEPAGE_PT850 FUNCTION Main() RDDSETDEFAULT( "DBFCDX" ) SET CENTURY ON SET DATE BRITISH SET EPOCH TO YEAR( DATE() ) - 30 SET SOFTSEEK OFF SET WRAP ON SETCANCEL( .F. ) SET CONFIRM OFF SET DELETED ON SET ESCAPE ON SET EXCLUSIVE OFF SET MULTIPLE OFF HB_LANGSELECT("PT") HB_SETCODEPAGE( "PT850" )
Código: Selecionar todos
\xHarbour\lib\rtl.lib + \xHarbour\lib\vm.lib + \xHarbour\lib\ct.lib + \xHarbour\lib\gtgui.lib + \xHarbour\lib\lang.lib + \xHarbour\lib\macro.lib + \xHarbour\lib\rdd.lib + \xHarbour\lib\dbfntx.lib + \xHarbour\lib\dbfcdx.lib + \xHarbour\lib\dbffpt.lib + \xHarbour\lib\hbsix.lib + \xHarbour\lib\Debug.lib + \xHarbour\lib\common.lib + \xHarbour\lib\pp.lib + \xHarbour\lib\HbComm.lib + \xHarbour\lib\pcrepos.lib + \xHarbour\lib\codepage.Lib + \xHarbour\lib\cw32.lib + \xHarbour\lib\HbZip.lib + \xHarbour\lib\ZLib.lib + \xHarbour\lib\Tip.lib + \Borland\Bcc55\lib\cw32.lib + \Borland\Bcc55\lib\import32.lib + \Borland\Bcc55\lib\uuid.lib + \Borland\Bcc55\lib\psdk\odbc32.lib + \Borland\Bcc55\lib\psdk\rasapi32.lib + \Borland\Bcc55\lib\psdk\nddeapi.lib + \Borland\Bcc55\lib\psdk\msimg32.lib + \Borland\Bcc55\lib\psdk\psapi.lib + \Borland\Bcc55\lib\psdk\Shell32.lib + \Borland\Bcc55\lib\psdk\iphlpapi.lib
Esse assunto também me interessou muito, mas, apesar de não ser o tópico aqui mencionado, no meu caso, mudei até o títulopara que os "moderadores" tomem as providências necessárias quanto à mudança dele de lugar (se acharem necessário).
Então, já que V.Sa. intitulou "passar a .CDX sem segredos", pra mim tem muita informação secreta (por trás das entrelinhas) que não entendo.
Atualmente, meus arquivos DBFNTX funcionam mais ou menos assim:
dbf clientes, abre uns 8 NTX para pesquisar por nome, cpf, endereço, rua, pai, mãe, esposa, etc.. etc...
então são abertos o DBF e seus 8 NTX.
Por isso, digo, que está muito difícil compreender suas linhas. Não quero apenas CTRL+C/V, quero - apesar do tempo estar avançado pra mim, quero aprender e compreender as linhas para que em todos os módulos do meu aplicativo eu faça as alterações de forma compreensiva.
Portanto, explicite "por favor" cada linha do seu código postado para que eu melhor compreenda esse novo universo HARBOUR/HMG/etc...
aguardo suas considerações!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!