Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
24 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 24 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
automação do mozilla e chrome

15/1/2017, 12:16 por Handerson Mildroz

Boa tarde a todos!

Sou iniciante no VFP. Preciso de ajuda, pois tenho um código que usa o …

Comentários: 0

COMO ESTÃO DESENVOLVENDO EM WEB?

22/8/2016, 10:48 por AJC

Pessoal, já lí sobre vários topicos aqui no forum sobre desenvolvimento web
mas ainda nada …

Comentários: 2

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 0

dll pertocheck

15/12/2016, 12:45 por FERNANDOMATRELLA

Alguem teria ja desenvolvido a comunicação com essa dll estou tento muito trabalho aqui e nenhum …

Comentários: 1

Rota de um arquivo

15/12/2016, 22:28 por Martins

Agradeço ajuda para o seguinte:
como guardar numa variável, um caminho ou rota,por exemplo


Comentários: 3

Estatísticas
Temos 6986 usuários registrados
O último usuário registrado atende pelo nome de carlosdantasf

Os nossos usuários postaram um total de 1 mensagem em 1 assuntos

Justificar textos em relatórios

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Tutorial Justificar textos em relatórios

Mensagem por edmo em 27/6/2009, 20:07

Caros colegas, boa noite !

Se interessar a alguem, segue um exemplo de como justificar
textos em relatorios.

Localizei vários exemplos na InterNet e como nao sou experiente, adaptei ao meu modo conforme segue, porem, se alguem puder melhorar a forma de aplicar eu agradeço as dicas.

1) adicionar o arquivos "System.App" no diretorio do seu projeto;

2) no seu ".prg" inical (Set Main) adicionar o codigo
"DEFINE CLASS FullJustifyListener AS ReportListener" que esta no arquivo JUSTIF.PRG;

3) No click do botão "Imprimir Relatorio Justificado", ajuste a variavel "lcText" com o texto que pretende justificar;

4) Neste exemplo existem 2 elementos no "INSERT INTO dummy"
-o primeiro tem apenas o valor de "lcText" sem formatação.
-o segundo valor possui a expressão "" (com aspas) que antecede a variavel "lcText" e é esta expressão que faz com que a variavel seja justificada.
Uma outra maneira é adicionar a expressão "" + (sua variavel de texto ou campo do DBF) no gerador de relatorios do VFP. Basta inserir o componente FIELD e informar no campo "Expression" da propriedade General.

Até +

Edson


Código:
****************************
ARQUIVO INICAL
*****************************
LOCAL lcPath

lcPath = ADDBS(JUSTPATH(SYS(16)))

SET PATH TO (lcPath) ADDITIVE

DO (LOCFILE("System.app"))


SET BELL ON
SET CENTURY ON
SET CENTURY TO 20
SET CONFIRM ON
SET DATE FRENCH
SET DECIMALS TO 2
SET DELETED OFF
SET EXCLUSIVE OFF
SET TALK OFF

* seu form inicial
DO FORM TESTE

READ EVENTS





* MANTER ESTE CODIGO NO SEU ARQUIVO INICIAL (SetMenu)

DEFINE CLASS FullJustifyListener AS _ReportListener
   oGDIGraphics = NULL
   nSaveGraphicsHandle = 0
   nTimes = 1
   DIMENSION aRecords[1]


   * Before we run the report, go through the FRX and store information about any
   * field with our expected directive in its USER memo into the aRecords array.
   FUNCTION BEFOREREPORT
      DODEFAULT()
      This.oGDIGraphics = _SCREEN.SYSTEM.Drawing.Graphics.New()

       WITH This
         .SetFRXDataSession()
         DIMENSION .aRecords[reccount(), 12]
         .ResetDataSession()
       ENDWITH

   ENDFUNC


   FUNCTION BEFOREBAND(nBandObjCode, nFRXRecNo)
      This.SharedGDIPlusGraphics = This.GDIPLUSGRAPHICS
      This.oGDIGraphics.Handle = This.SharedGDIPlusGraphics
      DODEFAULT(nBandObjCode, nFRXRecNo)
   ENDFUNC


   PROCEDURE RENDER(tnFRXRecNo,;
      tnLeft,tnTop,tnWidth,tnHeight,;
      nObjectContinuationType, ;
      cContentsToBeRendered, GDIPlusImage)

      LOCAL lcText
      lcText = This.aRecords(tnFRXRecNo,1)
      IF VARTYPE(lcText) = "C" AND lcText = "<FJ>"

         lcText = SUBSTR(lcText,5) && Remove the <FJ> tag from string
         This.oGDIGraphics.Handle = This.GDIPlusGraphics

         WITH _SCREEN.SYSTEM.Drawing

            *!* Create a GDI+ Rectangle which specifies where on the
            *!* surface we're drawing the text.
            LOCAL loRectF as xfcRectangleF
            loRectF = .RectangleF.New(tnLeft, tnTop, tnWidth, tnHeight)
         
            LOCAL loFont as xfcFont
            loFont = .Font.New(This.aRecords(tnFRXRecNo,2) ;
               , This.aRecords(tnFRXRecNo,4), This.aRecords(tnFRXRecNo,3) ;
               , .GraphicsUnit.Point)
            
            * Retieve colors for the background
            LOCAL lnRed, lnGreen, lnBlue, lnAlpha
            lnRed  = This.aRecords[tnFRXRecno,5]
            lnGreen = This.aRecords[tnFRXRecno,6]
            lnBlue  = This.aRecords[tnFRXRecno,7]
            lnAlpha = This.aRecords[tnFRXRecno,8]

            LOCAL loBackBrush as xfcSolidBrush
            loBackBrush = .SolidBrush.New(;
               .Color.FromArgb(lnAlpha,lnRed, lnGreen, lnBlue))

            This.oGdiGraphics.FillRectangle(loBackBrush, tnLeft, tnTop, tnWidth, tnHeight)

            * Retieve colors for the Text
            lnRed  = This.aRecords[tnFRXRecno,9]
            lnGreen = This.aRecords[tnFRXRecno,10]
            lnBlue  = This.aRecords[tnFRXRecno,11]
            lnAlpha = This.aRecords[tnFRXRecno,12]

            LOCAL loTextBrush as xfcSolidBrush
            loTextBrush = .SolidBrush.New(;
               .Color.FromArgb(lnAlpha,lnRed, lnGreen, lnBlue))

            This.oGdiGraphics.DrawStringJustified(lcText, loFont, loTextBrush, loRectF)

         ENDWITH

      ELSE
         *!* If we're not drawing a full justified string,
         *!* let Fox draw the text as usual.
         DODEFAULT(tnFRXRecNo, tnLeft, tnTop, tnWidth, tnHeight, ;
            nObjectContinuationType, cContentsToBeRendered, GDIPlusImage)
      ENDIF
      
      *!* Since we already drew the text, we don't want the default
      *!* behavior to occur.
      NODEFAULT

   ENDPROC
   

   FUNCTION EvaluateContents(tnFRXRecno, toObjProperties)
      *-- Get the FRX data
      This.aRecords[tnFRXRecno,1] = toObjProperties.Text
      This.aRecords[tnFRXRecno,2] = toObjProperties.FontName
      This.aRecords[tnFRXRecno,3] = toObjProperties.FontStyle
      This.aRecords[tnFRXRecno,4] = toObjProperties.FontSize
      This.aRecords[tnFRXRecno,5] = toObjProperties.FillRed
      This.aRecords[tnFRXRecno,6] = toObjProperties.FillGreen
      This.aRecords[tnFRXRecno,7] = toObjProperties.FillBlue
      This.aRecords[tnFRXRecno,8] = toObjProperties.FillAlpha
       This.aRecords[tnFRXRecno,9] = toObjProperties.PenRed
      This.aRecords[tnFRXRecno,10] = toObjProperties.PenGreen
      This.aRecords[tnFRXRecno,11] = toObjProperties.PenBlue
      This.aRecords[tnFRXRecno,12] = toObjProperties.PenAlpha
   ENDFUNC

ENDDEFINE




********************
* BOTAO DE IMPRESSAO - EVENTO CLICK
********************************

DO (LOCFILE("System.app"))

SET CLASSLIB TO (ADDBS(HOME(1)) + "FFC\_ReportListener.VCX") ADDITIVE

LOCAL loReportListener, i
loReportListener = CREATEOBJECT("FullJustifyListener")
loReportListener.LISTENERTYPE = 1

* Create a cursor that will be the report data source and insert some records
CREATE CURSOR Dummy (Field1 m, field2 m)
LOCAL lcText


* To print a FullJustified string,
*    we need to add a simple "<FJ>" tag before the string, as below


* AJUSTE AQUI SEU RELATORIO... se a expressao "<FJ>" estiver antes do texto ele sera justificado

lcText = "Eu, "+ ALLTRIM(clientes.razsocial)+", brasileiro, maior, casado, residente e domiciliada à Rua "+;
        "Lucas Inácio Barbosa, 1234, Residencial Monte Carlo, em Matão (SP), portador do CPF 123.456.789-00 "+;
        "e da cédula de identidade RG 12.345.678 SSP/SP, nascido em "+ DTOC(clientes.datnascto)+", sócio da "+;
        "microempresa VISUAL FOX PRO devidamente registrada na JUCESP sob o nº 35.4.5678902.8... e assim vai."
INSERT INTO dummy VALUES (lcText, "<FJ>" + lcText)


* note que o argumento 1 esta sem a expressao

SELECT Dummy
GO TOP


REPORT FORM LOCFILE("testjustif", "FRX") preview OBJECT loReportListener



* Close cursor
USE IN Dummy

RETURN

edmo
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Tutorial Re: Justificar textos em relatórios

Mensagem por Marcos Guedes em 8/1/2010, 12:59

Obrigado por compartilhar, Edson!

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Tutorial Re: Justificar textos em relatórios

Mensagem por alceu11 em 9/1/2010, 15:02

Edson
Sugestao. o form teste.
Se nao for pedir muito.
Vc poderia colocar 1 form com exemplo, com o codigo, desta forma teriamos um teste completo poderiamos colocar em codigos exemplos.

alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum