Página 1 de 2
Crystal Report - HMG
Enviado: 01 Mar 2011 12:50
por Pablo César
Lembro-me deste tópico:
https://pctoledo.org/forum/viewto ... 453#p36453, agora que utilizo HMG gostaria de saber se alguém sabe se é possível carregar um arquivo RPT do Crystal em MiniGui ?
Pois tenho um colega que por falta de recursos do Clipper ele passou a utilizar o CR com VB e agora que apresentei o HMG temos interesse de aproveitar essa ferramenta que é uma mão na roda...
Estive pesquisando aqui no fórum mas o único que achei sobre rpt é neste tópico do colega jairfab:
Dbu com minigui mas ainda não conseguí compilá-lo.
Re: Crystal Report - HMG
Enviado: 01 Mar 2011 13:32
por sygecom
É possivel usar sim, eu já usei. você está usando Harbour ou xHarbour ? e qual versão ?
Re: Crystal Report - HMG
Enviado: 01 Mar 2011 13:57
por Toledo
Pablo, dê uma olhada neste tópico do fórum HMG:
http://hmgforum.com/viewtopic.php?f=5&t=595
Abraços,
Crystal Report - HMG
Enviado: 01 Mar 2011 14:04
por Pablo César
Ahhh sim, Leonardo ? Que bom !
Estou usando HMG 3.0.35, HMGs e HMG 4. A versão do Harbour que acompanha a instalação do pacote HMG é versão 2.0.0 e o MiniGui.
Pode me dizer é apenas utilizar o load ? Pode postar um exemplo ?
Crystal Report - HMG
Enviado: 01 Mar 2011 15:42
por Pablo César
Maravilha, Toledo !!! Fiz o exemplo citado e funcionou sem menor problema. Pena que não entendí qual é o real problema do colega Gochito lá no fórum HMG. Será que era para mudar algum propriedade, será que ele não experimentou o SetProperty()... Com mais experiência vou ver se posso ajudar ele, se é que ja não resolveu... ao final de contas esse tópico é de junho de 2009. Mas que bom esse HMG é fantastico ! Estou muito contente e olhe que testei com a versão HMG 3.0.35.
Valeu Toledo !!! Muchas gracias !
Re: Crystal Report - HMG
Enviado: 01 Mar 2011 16:32
por sygecom
Que bom que já resolveu.
Pablo César escreveu: Estou muito contente e olhe que testei com a versão HMG 3.0.35.
Você falando isso !!!
Agora sim, só falta o Maligno vir aqui dizer que também está usando o Harbour, ai vamos ter que fazer um abaixo assinado para o Toledo mudar o nome do forum para pra: Harbour On Line, rsrsrsrsrsr
Que bom que está gostando, é realmente um caminho muito bom para quem vem do Clipper...
Crystal Report - HMG
Enviado: 01 Mar 2011 19:47
por Pablo César
Pois é... Leonardo é dificil reconhecer nossas desafeições, apesar de que eu nunca disse que o Harbour não prestava... o que ajuda muito é a internet, senão estava frito... pois a documentação e apresentação do produto é muito precário. Mas como é OPENSOURCE e é isso uma das grandes vantagens, pois convenhamos, muita gente já trabalhou nesse projecto do Harbour e a que custo ? Outros surgiram e surgirão assim que a ferramenta estão melhorando. Agora sobre mudar o nome do site, acho dificil isso acontecer, outra porque o nome Clipper deixa aos saudocistas programadores com gostinho de "netinho" querido... pois é que não lembra do Clipper com carinho ? Para mim já foi uma etapa superada, apesar de não possuir grandes projetos em GUI, mas não pretendo programar mais em modo console, ou pelo menos por um bom tempo... Tento sim, manter a cabeça ainda aberta, pois ainda quero dominar Java, agora xBase em modo GUI era uma questão de honra e espero que muitos possam superar essa barreira também.
Para quem quiser ver o meu exemplo utilizando arquivo .rpt do Crystal Report:
Código: Selecionar todos
#include "hmg.ch"
FUNCTION Main()
DEFINE WINDOW Win1 ;
AT 0,0 ;
WIDTH 800 ;
HEIGHT 500 ;
TITLE 'HMG ActiveX Support Demo' ;
MAIN
DEFINE MAIN MENU
POPUP "Test"
MENUITEM "Open File" ACTION Test()
END POPUP
END MENU
DEFINE ACTIVEX CrystalControl
ROW 220
COL 10
WIDTH 0
HEIGHT 0
PROGID "Crystal.CrystalReport"
END ACTIVEX
END WINDOW
Center Window Win1
Activate Window Win1
RETURN NIL
Procedure Test()
Win1.CrystalControl.Object:WindowTitle := "Reporte de Crystal"
Win1.CrystalControl.Object:ReportFileName := "ETI_PRO126_1.rpt"
Win1.CrystalControl.Object:WindowShowPrintSetupBtn := .t.
Win1.CrystalControl.Object:PrintReport()
Return
No próximo exemplo, verifico se o DEFINE ja não tinha sido acionado e ainda uma outra forma de utilizar os recursos de ACTIVEX.
Código: Selecionar todos
If IsControlDefined(CrystalControl,Win_Edit)=.T.
DoMethod("Win_Edit","CrystalControl","SetFocus")
Else
@ 220,10 ACTIVEX CrystalControl ;
OF Win_Edit ;
WIDTH 0 ;
HEIGHT 0 ;
PROGID "Crystal.CrystalReport"
Endif
Win_Edit.CrystalControl.Object:WindowTitle := "Reporte de Crystal"
Win_Edit.CrystalControl.Object:ReportFileName := "ETI_PRO126_1.rpt"
Win_Edit.CrystalControl.Object:WindowShowPrintSetupBtn := .T.
Win_Edit.CrystalControl.Object:WindowShowRefreshBtn := .T.
Win_Edit.CrystalControl.Object:PrintReport()
Neste ultimo exemplo, conseguí descobrir como adicionar aquele botão de REFRESH do relatório, foi na tentativa de acerto e erro que conseguí.
Só que Leonardo, a título de enriquecer os conceitos neste aprendizado, gostaria que desse alguns exemplos sobre interiação das propriedades de controle com CR, ja que é esse um dos pontos que ainda não estão claros.
Crystal Report - HMG
Enviado: 01 Mar 2011 20:28
por Pablo César
alguns exemplos sobre interiação das propriedades de controle com CR
Acredito que essas propriedade partem da biblioteca externa "crystl32.ocx". Alguém tem algum documentação que se aplique a HMG ou em Harbour ?
Crystal Report - HMG
Enviado: 01 Mar 2011 21:04
por Pablo César
Achei um manual sobre o uso crystl32.ocx para VB que assemelha-se ao HMG e coloco em anexo para disposição de todos (em inglês).
Re: Crystal Report - HMG
Enviado: 01 Mar 2011 22:01
por sygecom
Crystal Report - HMG
Enviado: 01 Mar 2011 22:54
por Pablo César
Obrigado Leo, mas esses códigos utiliza outra biblioteca CRPE32.DLL que parece-me que o MiniGui não trabalha, pois não reconhece nenhma desses property names. O erro na execução indica que passa por uma classe chamada TOLEAUTO.
Nas tentativas de erros e acertos, conseguí identificar mais uma:
Win_Edit.CrystalControl.Object:WindowState := 2 // ( 0=normal/1=minimized/2=maximized )
Mas estou precisando encontrar esta outra propriedade que serve para viazualização (Zoom no preview), que segundo a Microsoft é: ActivePane.View.Zoom.Percentage = 80
Crystal Report - HMG
Enviado: 02 Mar 2011 13:58
por Pablo César
Conseguí mais propriedades, segundo o VB e que são os mesmos para o HMG:
Código: Selecionar todos
If IsControlDefined(CrystalControl,Win_Edit)=.T.
DoMethod("Win_Edit","CrystalControl","SetFocus")
Else
@ 220,10 ACTIVEX CrystalControl ;
OF Win_Edit ;
WIDTH 0 ;
HEIGHT 0 ;
PROGID "Crystal.CrystalReport"
Endif
Win_Edit.CrystalControl.Object:WindowState := 0 // ( 0=normal/1=minimized/2=maximized )
Win_Edit.CrystalControl.Object:WindowTitle := "Etiquetas formatadas com Crystal Report"
Win_Edit.CrystalControl.Object:ReportFileName := "ETI_PRO126_1.rpt"
Win_Edit.CrystalControl.Object:WindowShowPrintBtn := .T.
Win_Edit.CrystalControl.Object:WindowShowPrintSetupBtn := .T.
Win_Edit.CrystalControl.Object:WindowShowRefreshBtn := .T.
Win_Edit.CrystalControl.Object:WindowShowSearchBtn := .T.
Win_Edit.CrystalControl.Object:WindowShowCloseBtn := .T.
Win_Edit.CrystalControl.Object:WindowShowGroupTree := .F.
Win_Edit.CrystalControl.Object:WindowShowNavigationCtls := .T.
Win_Edit.CrystalControl.Object:WindowShowCancelBtn := .T.
Win_Edit.CrystalControl.Object:WindowMaxButton := .T.
Win_Edit.CrystalControl.Object:WindowMinButton := .T.
Win_Edit.CrystalControl.Object:WindowShowZoomCtl := .T.
Win_Edit.CrystalControl.Object:WindowAllowDrillDown := .F.
Win_Edit.CrystalControl.Object:WindowControls := .T.
Win_Edit.CrystalControl.Object:WindowControlBox := .T.
Win_Edit.CrystalControl.Object:WindowLeft := 228
Win_Edit.CrystalControl.Object:WindowTop := 106
Win_Edit.CrystalControl.Object:WindowHeight := 605
Win_Edit.CrystalControl.Object:WindowWidth := 532
Win_Edit.CrystalControl.Object:CopiesToPrinter := 1
Win_Edit.CrystalControl.Object:DetailCopies := 1
Win_Edit.CrystalControl.Object:PrintReport()
Agora ficou faltando inteiragir com as campos-fórmulas, mas por enquanto não estamos precisando.
Crystal Report - HMG
Enviado: 29 Ago 2011 18:58
por gilsonpaulo
Amigos, com grande ajuda deste topico consegui usar relatorios do crystal reports com hmg-ide segue os fontes.
Código: Selecionar todos
* HMG-IDE Form Designer Generated Code
* (c) Roberto Lopez - http://sites.google.com/site/hmgweb
DEFINE WINDOW TEMPLATE AT 191 , 458 WIDTH 222 HEIGHT 204 VIRTUAL WIDTH Nil VIRTUAL HEIGHT Nil TITLE "" ICON NIL MAIN NOMAXIMIZE NOMINIMIZE CURSOR NIL ON INIT Nil ON RELEASE Nil ON INTERACTIVECLOSE Nil ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ON SIZE Nil ON MAXIMIZE Nil ON MINIMIZE Nil ON PAINT Nil BACKCOLOR Nil NOTIFYICON NIL NOTIFYTOOLTIP NIL ON NOTIFYCLICK Nil ON GOTFOCUS Nil ON LOSTFOCUS Nil ON SCROLLUP Nil ON SCROLLDOWN Nil ON SCROLLLEFT Nil ON SCROLLRIGHT Nil ON HSCROLLBOX Nil ON VSCROLLBOX Nil
DEFINE BUTTON btn_vlr_custo
ROW 20
COL 5
WIDTH 100
HEIGHT 60
ACTION main_btn_vlr_custo_action()
CAPTION "Valor Estoque"
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
HELPID Nil
FLAT .F.
TABSTOP .T.
VISIBLE .T.
TRANSPARENT .F.
MULTILINE .F.
PICTURE Nil
PICTALIGNMENT TOP
END BUTTON
DEFINE BUTTON btn_lista_estoque
ROW 20
COL 110
WIDTH 100
HEIGHT 60
ACTION Report()
CAPTION "Lista Estoque"
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
HELPID Nil
FLAT .F.
TABSTOP .T.
VISIBLE .T.
TRANSPARENT .F.
MULTILINE .F.
PICTURE Nil
PICTALIGNMENT TOP
END BUTTON
DEFINE LABEL lbl_custo
ROW 90
COL 10
WIDTH 75
HEIGHT 13
VALUE "Valor Custo.:"
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
HELPID Nil
VISIBLE .T.
TRANSPARENT .F.
ACTION Nil
AUTOSIZE .F.
BACKCOLOR NIL
FONTCOLOR NIL
END LABEL
DEFINE LABEL lbl_venda
ROW 120
COL 10
WIDTH 75
HEIGHT 24
VALUE "Valor Varejo.:"
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
HELPID Nil
VISIBLE .T.
TRANSPARENT .F.
ACTION Nil
AUTOSIZE .F.
BACKCOLOR NIL
FONTCOLOR NIL
END LABEL
DEFINE TEXTBOX txt_custo
ROW 85
COL 90
WIDTH 120
HEIGHT 24
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
ONCHANGE Nil
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
FONTBOLD .T.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONENTER Nil
HELPID Nil
TABSTOP .T.
VISIBLE .T.
READONLY .F.
RIGHTALIGN .F.
DISABLEDBACKCOLOR Nil
DISABLEDFONTCOLOR Nil
BACKCOLOR NIL
FONTCOLOR NIL
INPUTMASK "99999999999.99"
FORMAT Nil
NUMERIC .T.
VALUE Nil
END TEXTBOX
DEFINE TEXTBOX txt_venda
ROW 115
COL 90
WIDTH 120
HEIGHT 24
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
ONCHANGE Nil
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
FONTBOLD .T.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONENTER Nil
HELPID Nil
TABSTOP .T.
VISIBLE .T.
READONLY .F.
RIGHTALIGN .F.
DISABLEDBACKCOLOR Nil
DISABLEDFONTCOLOR Nil
BACKCOLOR NIL
FONTCOLOR NIL
INPUTMASK "99999999999.99"
FORMAT Nil
NUMERIC .T.
VALUE Nil
END TEXTBOX
DEFINE BUTTON main_btn_sair
ROW 140
COL 120
WIDTH 90
HEIGHT 28
ACTION main_main_btn_sair_action()
CAPTION "Sair"
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
HELPID Nil
FLAT .F.
TABSTOP .T.
VISIBLE .T.
TRANSPARENT .F.
MULTILINE .F.
PICTURE Nil
PICTALIGNMENT TOP
END BUTTON
DEFINE ACTIVEX CrystalControl
ROW 0
COL 0
WIDTH 0
HEIGHT 0
PROGID "Crystal.CrystalReport"
END ACTIVEX
DEFINE CHECKBOX check_neg
ROW 140
COL 5
WIDTH 105
HEIGHT 28
CAPTION "Ignora Negativo"
VALUE .F.
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
ONCHANGE Nil
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
BACKCOLOR NIL
FONTCOLOR NIL
HELPID Nil
TABSTOP .T.
VISIBLE .T.
TRANSPARENT .F.
END CHECKBOX
END WINDOW
Código: Selecionar todos
#include <hmg.ch>
Function Main
LOCAL aField[7]
aField[1] := {"CODIGO" , "C", 8, 0}
aField[2] := {"PRODUTO", "C", 40, 0}
aField[3] := {"ESTOQUE", "N", 14, 2}
aField[4] := {"CST" , "N", 14, 2}
aField[5] := {"VEN" , "N", 14, 2}
aField[6] := {"TOTCST" , "N", 14, 2}
aField[7] := {"TOTVEN" , "N", 14, 2}
if .not. File("TEMPEST.DBF")
DbCreate( "TEMPEST.DBF", aField )
endif
Set Interactiveclose off
Set Deleted ON
Set Navigation Extended
Set Multiple off
Set Codepage to Portuguese
Set Language to Portuguese
Set Date Format "dd/mm/yyyy"
Set Epoch to Year(Date())-50
Load Window Main
main.txt_custo.Enabled := .f.
main.txt_venda.Enabled := .f.
Main.CrystalControl.hide
Main.Center
Main.Activate
Return
Function main_btn_vlr_custo_action
local precusto:=0.00,prevenda:=0.00,qtdcusto:=0.00,qtdvenda:=0.00
select 1
use cadmer shared alias cadmer
go top
select 2
use tempest exclusive alias tempest
zap
index on codigo to tcodigo
index on produto to tproduto
select cadmer
go top
do while .not. eof()
* main.txt_produto.Value:=cadmer->desmer
qtdcusto = 0.00
qtdvenda = 0.00
qtdcusto = antmer+entmer-saimer
qtdvenda = antmer+entmer-saimer
if main.check_neg.Value = .f.
precusto = (qtdcusto*precst)+precusto
prevenda = (qtdvenda*premer)+prevenda
select tempest
append blank
replace tempest->codigo with cadmer->codmer
replace tempest->produto with cadmer->desmer
replace tempest->estoque with cadmer->antmer+cadmer->entmer-cadmer->saimer
replace tempest->cst with cadmer->precst
replace tempest->ven with cadmer->premer
replace tempest->totcst with qtdcusto*cadmer->precst
replace tempest->totven with qtdvenda*cadmer->premer
main.txt_custo.Value := precusto
main.txt_venda.Value := prevenda
select cadmer
skip
else
if cadmer->antmer+cadmer->entmer-cadmer->saimer > 0
precusto = (qtdcusto*precst)+precusto
prevenda = (qtdvenda*premer)+prevenda
select tempest
append blank
replace tempest->codigo with cadmer->codmer
replace tempest->produto with cadmer->desmer
replace tempest->estoque with cadmer->antmer+cadmer->entmer-cadmer->saimer
replace tempest->cst with cadmer->precst
replace tempest->ven with cadmer->premer
replace tempest->totcst with qtdcusto*cadmer->precst
replace tempest->totven with qtdvenda*cadmer->premer
main.txt_custo.Value := precusto
main.txt_venda.Value := prevenda
select cadmer
skip
else
select cadmer
skip
endif
endif
enddo
select tempest
commit
Return
Function main_main_btn_sair_action()
close all
main.release
Return
Function Report
main_btn_vlr_custo_action()
close all
Main.CrystalControl.Object:DiscardSavedData := .t.
Main.CrystalControl.Object:WindowTitle := "Relatório Estoque"
Main.CrystalControl.Object:ReportFileName := "estoque.rpt"
Main.CrystalControl.Object:WindowState := 2
Main.CrystalControl.Object:WindowShowPrintSetupBtn := .T.
Main.CrystalControl.Object:WindowShowRefreshBtn := .T.
Main.CrystalControl.Object:WindowShowSearchBtn := .T.
Main.CrystalControl.Object:WindowShowCloseBtn := .T.
* Main.CrystalControl.Object:WindowShowGroupTree := .T.
Main.CrystalControl.Object:WindowShowNavigationCtls := .T.
Main.CrystalControl.Object:WindowShowCancelBtn := .T.
Main.CrystalControl.Object:WindowShowZoomCtl := .T.
Main.CrystalControl.Object:WindowControls := .T.
Main.CrystalControl.Object:WindowControlBox := .T.
Main.CrystalControl.Object:CopiesToPrinter := 1
Main.CrystalControl.Object:DetailCopies := 1
Main.CrystalControl.Object:PrintReport()
Return
Estou usando o crystal 8.5, do 9 em diante as coisas mudam mas nada que o 8.5 não resolva. As versões anteriores tambem são compativeis.
Crystal Report - HMG
Enviado: 30 Ago 2011 19:11
por gilsonpaulo
Pesquisando mais sobre o Crystal Reports e formulas descobri isso.:
Filtrar o dbf pelo numero. Não precisei usar indice.
Código: Selecionar todos
Main.CrystalControl.Object:SelectionFormula:="{ORCAMEN.NUNVEM}='03153'"
Com variavel.
Código: Selecionar todos
Main.CrystalControl.Object:SelectionFormula:="{ORCAMEN.NUNVEM}='"+variavel+"'"
Isto vale para compos caracters para compos numericos e data estou testando. Agradeço qualquer contribuição para enriquecer o tópico.
Crystal Report - HMG
Enviado: 30 Ago 2011 20:02
por Pablo César
Gilson Paulo escreveu:Isto vale para compos caracters para compos numericos e data estou testando. Agradeço qualquer contribuição para enriquecer o tópico.
Tá certo Gilson, valeu !. Assim como serviu pra você, aqui é uma grande fonte centralizadora de informações e fico muito contente de ter servido pra você !