Usando Harbour 3.0

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usando Harbour 3.0

Mensagem por JoséQuintas »

Eu tenho parte do sistema em fonte Clipper, e parte em fonte VB.
Voltei a fazer testes, e adotei o Harbour 3.0.

Objetivos:
1 - Substituir o Clipper
A maioria dos relatórios faz uso de um Preview em VB, mas ainda tem alguns de impressão direta, e faço manutenção em um sistema de terceiros que usa só impressão direta.
Há como usar a impressora da mesma forma que o Clipper?
Tentei set printer to (getdefaultprinter()), mas não deu.

2 - Equivalente ao debug do Clipper
Ainda não entendi como ativar o debug no Harbour. Tentei só compilar com a opção /b mas não foi.

3 - Substituir Preview VB
Não exatamente agora, já que não pretendo mexer em tela gráfica tão cedo.
O preview é simples: apenas um textbox (estilo memoedit()), e uso o recurso de aumentar/reduzir o tamanho do fonte/letra.
A geração de PDF fiz em fonte VB, então está fácil adaptar pro harbour.
Alguém tem alguma sugestão prática, simples, só pra botões e o textbox/memoedit com seleção de fonte?
Se for possível, o preview dentro do mesmo EXE console, mas rodando em janela separada com threat independente.
Se ficar em EXE separado, seria o mesmo que já tem em VB, mas pode servir como estudo.
Obs. Não é o preview pronto, é sobre isso da parte gráfica usando textbox/botões.

4 - Substituir NFE do VB, acessando DLL Delphi
Tentei usar uma DLL em Delphi, que uso no VB, mas não deu.
Usei importlib pra gerar a LIB, mas na linquedição acusa funções não encontradas.
Talvez seja devido a upper/lowercase no nome das funções da DLL, isso também fez diferença no VB.
Alguma sugestão pra definir o uso?

5 - Substituir uso de MySql do VB
Tentei a adordd do harbour, mas acusou problemas.
O método antigo, do tempo do xharbour 0.x ainda funciona.
Usando ado via createobject() funciona, e o fonte fica 90% igual ao que já uso no VB6, porque funções do ado são padrão.
A maior parte do MySql é pra NFE, então só depois de resolver a questão da DLL é que vou pensar em outra alternativa pra esta parte.

Meu uso:
Harbour 3.0, bcc55, e modo console - Clipper já pouco usado
Por enquanto ainda VB6 para preview de relatórios, comunicação com NFE-Sefaz (uso da dll delphi), e para as partes do sistema que dependem de MySql.

Se alguém puder dar as dicas agradeço, sobre impressora igual clipper, dll delphi, debug e parte gráfica básica pro preview.
Não quero mexer com parte gráfica no sistema inteiro agora, porque isso vai longe, e vai atrapalhar serviços urgentes.
Só adotei o padrão mínimo de 100 colunas x 35 linhas, que ajuda muito, e permitindo usar acima disso.

Obs. Venho pesquisando a algumas semanas, mas tá difícil encontrar algo, e quando encontro se refere a versões antigas do harbour, que não funciona na versão atual.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Usando Harbour 3.0

Mensagem por janio »

Uso xharbour 1.2.1 em modo console + gtwvw + algumas telas em hwgui.

Quanto ao preview, vc pode usar uma contribuição do sygecom, feita em hwgui, que também uso.

Código: Selecionar todos

**********************
FUNCTION Edicao(cFile)
**********************
LOCAL oDlg
Local oFont
Local lText   := hb_oemtoansi(MemoRead(cFile))
or_Text=cFile
nsizefont := -13

PREPARE FONT oFont NAME "COURIER NEW" WIDTH 0 HEIGHT 0 WEIGHT -13
oFont2 := HFont():Add( "Courier New",0,-13 )
oFont3 := HFont():Add( "Ms Sans Serif",0,-10 )

INIT DIALOG oDlg TITLE "Visualização do Relatório" ;
AT 0,0 SIZE GETDESKTOPWIDTH(),GETDESKTOPHEIGHT();
FONT oFont

@ 88,19 RichEdit oEdit TEXT lText SIZE GETDESKTOPWIDTH()-100,GETDESKTOPHEIGHT()-100;
OF oDLG ID ID_TEXTO;
COLOR 0 BACKCOLOR 16777215 ;
ON getfocus {|| TopoDoc()};
STYLE WS_HSCROLL+WS_VSCROLL+ES_LEFT+ES_MULTILINE+ES_READONLY;
FONT oFont2

@ 6,30  BUTTON cmd1 Caption " - Zoom" ON CLICK {|| ZOOMIMP2(oEdit,'-')}        SIZE 75,32 FONT oFont3
@ 6,80  BUTTON cmd1 Caption " + Zoom" ON CLICK {|| ZOOMIMP2(oEdit,'+')}        SIZE 75,32 FONT oFont3
@ 6,130 BUTTON "Imprimir"  ON CLICK {||EndDialog(),CHAMAIMP("S",or_Text)}      SIZE 75,32 FONT oFont3
@ 6,180 BUTTON "Gera Pdf"  ON CLICK {||EndDialog(),GERA_PDF(or_Text)}          SIZE 75,32 FONT oFont3
@ 6,230 BUTTON "Gera Word" ON CLICK {||EndDialog(),Abre_word(or_Text)}         SIZE 75,32 FONT oFont3
@ 6,280 BUTTON "E-Mail"    ON CLICK {||EndDialog(),VAIEMAIL(or_Text)}          SIZE 75,32 FONT oFont3
@ 6,330 BUTTON "Fechar"    ON CLICK {||EndDialog()}                            SIZE 75,32 STYLE WS_TABSTOP FONT oFont3
ACTIVATE DIALOG oDlg
RETURN

****************
FUNCTION topodoc
****************
sendMessage(oEDiT:Handle, WM_VSCROLL  ,SB_TOP,0)
sendMessage(oEDiT:Handle, EM_SETSEL  ,0,0)
return .t.
*****************************
FUNCTION ZOOMIMP2(oedt,csize)
*****************************
nsizefont := nsizefont + iif(csize='-', 1 , -1)
nsizefont := iif(csize='-',min(-9,nsizefont),;
max(-15,nsizefont))
oFont2 := HFont():Add( "Courier New",0,nsizefont )
sendMessage(oEDiT:Handle,WM_SETFONT ,oFont2:handle,0 )
oEdIT:refresh()
RETURN .T.
Vc terá uma tela mais ou menos como a abaixo. Lembrando que meu sistema é console. Mas o legal é que o mesmo exe.

Imagem

Quanto a impressora igual ao clipper:

Vc tem duas opções e são as que uso

Se a impressora é matricial, direciono a impressao direto para a porta:

SET PRINTER ON
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SET CONSOLE OFF

Ou vc pode também direcionar a impressao para um txt e usar a funcao PrintFileRaw (essa muito mais pratica pq funciona pra qualquer impressora lpt ou usb)

Código: Selecionar todos

gPrinterName := GetDefaultPrinter()
ArqImp := "imp.txt"

SET PRINT ON 
SET PRINTER TO &ArqImp
SET DEVICE TO PRINTER 
SET CONSOLE OFF

...

SET CONSOLE ON
SET PRINTER OFF
SET PRINTER TO
SET DEVICE TO SCREEN 

PrintFileRaw( gPrinterName, ArqImp, 'Cria SoftWare')
Como ja disse, uso xharbour, mas acredito que funcione também em harbour. Nao custa tentar...
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Usando Harbour 3.0

Mensagem por lugab »

Bonito preview, Jânio.

Podes dizer qual lib e quais arquivos .CH ele exige pra rodar no xhb console ?

Gabriel
lugab
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Usando Harbour 3.0

Mensagem por marcos.gurupi »

O exemplo estah incompleto. Poderia postar o codigo completo?

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Usando Harbour 3.0

Mensagem por janio »

Os creditos são todos do moderador deste forum SYGECOM.

Uma época ele me passou uns exemplos de gtwvw + hwgui, onde consta a função desse preview feito em hwgui. Acho que não terá mal em compartilhar com vcs... então segue o exemplo completo:

http://www.4shared.com/file/CfZ-AjIl/sagi_gtwvt.html

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Usando Harbour 3.0

Mensagem por clodoaldomonteiro »

Olá Pessoal!

1. Quanto a impressão de relatórios vcs podem usar a libpdf.lib, que uso com xharbour 1.0.
É bem fácil gerar o arquivo binário no padrão PDF e depois de gerar esse arquivo é só chamá-lo com o comando RUN ou alguma função de chamamento externo.
Se quiserem eu posto um exemplo aki.

2. Quando ao harbour 3.0:
- Estou tentando usar ele e to tendo dificuldades na hora de compilar com ele, pois eu uso o xDev Studio do Vailton e o script de compilação não tá compatível com ele então queria saber dos amigos se poderiam postar aki um exemplo detalhado de como compilar com o harbour 3.0.

Fico aguardando.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usando Harbour 3.0

Mensagem por JoséQuintas »

Pode-se usar o hbmk2, que vém junto.
hbmk2 fonteunico.prg

dir *.prg /b > arquivo.clp
hbmk2 @arquivo.clp

Isso seria o básico, mas ele permite muitas opções

Estou acostumado com meu próprio gerenciador, então só vou ajustando conforme compilador.
Mas é algo como substituir as chamadas clipper.exe e blinker.exe pelos equivalentes harbour+bcc e ilink32 e LIBs.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
burel
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 27 Jan 2013 13:09
Localização: rio de janeiro

Usando Harbour 3.0

Mensagem por burel »

Olá pessoal, sou Clippeiro a +- 15 anos e estou migrando para XHarbour, com
Win 7 64 bits,
Estava tudo indo muito bem até a impressão. Os meus programas imprimem direto para a porta com o comando Set printer to lpt1.
Quando envio o comando direto para a lpt1
Set Printer to Lpt1 recebo o erro
Error TERM/2013 Create error: lpt1.prn (DOS Error 2)
Alguém pode me ajudar
abaixo a seguencia do comando,
obrigado pela atenção,

Set console off

Set Print on
Set Device to Printer
set printer to lpt1

Error TERM/2013 Create error: lpt1.prn (DOS Error 2)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Usando Harbour 3.0

Mensagem por Jairo Maia »

Olá,

Este erro está ocorrendo porque não foi possivel abrir a porta LPT1. Como se trata de máquina recente, verifique uma das seguinte causas:

1 - a máquina não possui porta LPT1 física, e nem virtual
2 - a máquina possui porta LPT1 física, mas está desabilitada no Setup. Precisa habilitar.

Por outro lado, sugiro uma mudança de conceito quanto a impressão, direcionando a impressão para arquivo e depois enviando a uma impressora do Windows através da função Win_PrintFileRaw( cImpressora, cArquivo_a_imprimir, cTitulo )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Usando Harbour 3.0

Mensagem por Pablo César »

burel escreveu:Olá pessoal, sou Clippeiro a +- 15 anos e estou migrando para XHarbour
Lembrando também que este tópico trata de Harbour não de xHarbour.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Usando Harbour 3.0

Mensagem por clodoaldomonteiro »

Olá Burel.

Eu não imprimo nada pela porta LPT1, o que faço é gerar um arquivo PDF e visualizo imediatamente.
Desta maneira resolvo todos os problemas de impressão.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Usando Harbour 3.0

Mensagem por janio »

Bureu,

Clique no seu executavel com botão direito e va na opcao "executar como administrador".

Faça um teste

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usando Harbour 3.0

Mensagem por JoséQuintas »

Detalhe:
Tive caso aonde set printer to lpt1 não funcionava.
Pelo menos em Clipper, e em rede Windows 2000, o sistema não podia estar em pasta que não fosse no padrão de 8 letras.
Também tive caso onde tinha que ser lpt1: e não lpt1

E também tem o que já foi mencionado, pois existe computador que não tem saída paralela (lpt1).

Tenho um único caso onde um cliente usa uma Epson FX2180 paralela, mas ligada por cabo adaptado USB.
Neste aqui precisou usar o NET USE LPT1: //computador/impressora

Se for possível, o interessante é mesmo gerar em PDF, e usar um programa padrão de PDF.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Usando Harbour 3.0

Mensagem por alxsts »

Olá!

Parece que o sistema está tentando criar o arquivo Lpt1.Prn e não tem direito de escrita na pasta destino...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usando Harbour 3.0

Mensagem por JoséQuintas »

Teste pela linha de comando, na mesma pasta do sistema.
Digite
dir > lpt1
dir > lpt1:
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder