Página 1 de 1

Usando Harbour 3.0

Enviado: 24 Ago 2011 15:19
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.

Usando Harbour 3.0

Enviado: 24 Ago 2011 20:28
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...

Usando Harbour 3.0

Enviado: 24 Ago 2011 21:53
por lugab
Bonito preview, Jânio.

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

Gabriel

Usando Harbour 3.0

Enviado: 24 Ago 2011 22:28
por marcos.gurupi
O exemplo estah incompleto. Poderia postar o codigo completo?

Marcos Roberto.

Usando Harbour 3.0

Enviado: 24 Ago 2011 23:16
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

Usando Harbour 3.0

Enviado: 03 Set 2011 09:59
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.

Usando Harbour 3.0

Enviado: 03 Set 2011 19:21
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.

Usando Harbour 3.0

Enviado: 28 Jan 2013 09:44
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)

Usando Harbour 3.0

Enviado: 28 Jan 2013 10:03
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 )

Usando Harbour 3.0

Enviado: 28 Jan 2013 10:11
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.

Usando Harbour 3.0

Enviado: 28 Jan 2013 13:25
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.

Usando Harbour 3.0

Enviado: 28 Jan 2013 14:22
por janio
Bureu,

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

Faça um teste

Janio

Usando Harbour 3.0

Enviado: 28 Jan 2013 15:34
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.

Usando Harbour 3.0

Enviado: 28 Jan 2013 15:37
por alxsts
Olá!

Parece que o sistema está tentando criar o arquivo Lpt1.Prn e não tem direito de escrita na pasta destino...

Usando Harbour 3.0

Enviado: 28 Jan 2013 16:15
por JoséQuintas
Teste pela linha de comando, na mesma pasta do sistema.
Digite
dir > lpt1
dir > lpt1: