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 !!!
:-o
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ê !