Ir para conteúdo
Fórum Script Brasil
  • 0

Codigo Fonte do quick report


Recife

Pergunta

Bom dia pessoal,

alguém já colocou alguma nova funcionalidade direto no codigo fonte do quick report. Estou precisando inserir rotina dentro do mesmo, porém não estou conseguindo encontrar onde se inicializam os eventos before e after print, onde é setada a banda detail.

Conseguir acessar o form do preview(QRPrev.pas) e a unit QuickRpt.pas(onde creio esta o que procuro,porem não encontrei)

Estou utilizando o delphi 7 e quick report 4.05(onde tenho o codigo fonte da montagem do mesmo).

Abraços.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi Progr'amador,

O que estou querendo é implementar relatórios zebrados direto no quick report. Como zebrar o relatório e imprimir sem as zebras peguei a dica com o Micheus, porém meu chefe deseja que a mesma seja implementada direto no quick.

Conseguir implantar a rotina para zebrá-lo, porém não estou conseguindo colocar a propriedade do QRDBText para transparente. Também precisaria identificar onde fica o beforeprint da band detail e before e after print que ficam no quick.

A idéia é a seguinte:

- Colocar um checkbox no QRPrev.pas e se o mesmo estiver true o relatório sairá no preview a zebrado, com isto ele tera seu default true. Criar um arquivo tipo .ini que ira registrar se o checkbox esta true ou false antes de executar o preview.

- Quando clicar no botão de imprimir o relatório será impresso da forma normal (sem Zebra).

O que já foi feito:

-Inclusão de rotina em que cria-se as variáveis de controle para zebrar e condições que verificam se as vaiáveis de controle estão verdadeiras ou falsas para zebrar ou não .

-no clique do botão imprimir rotina para passar a variável de controle para true, pois existe uma rotina em que inverte seu valor fazendo com que a condição de zebrar não seja executada, dai imitido o relatório sem zebras.

Editado por Recife
Link para o comentário
Compartilhar em outros sites

  • 0
Conseguir implantar a rotina para zebrá-lo, porém não estou conseguindo colocar a propriedade do QRDBText para transparente.
Recife, para ficar correto, você deverá fazer isto com os outros componentes (TQRLabel, TQRExpr, TQRMemo, ... - todos os que você possa vir a colocar na banda).

Todos eles tem esta propriedade em comum, logo, a declaração dela deve estar em uma classe ancestral comum. Verifique se não estaria no arquivo QrCtrls.pas a classe TQRCustomLabel (segundo o help, é a ancestral destas que citei). Encontrando a declaração da propriedade, normalmente será algo como:

property Transparent: boolean; read ... write SetTransparent default False

Mude o valor default para True e dê uma procurado pelo método create da classe onde você encontrou esta definição, pois lá a propriedade deverá estar sendo inicializada - altere-a também para False.

Também precisaria identificar onde fica o beforeprint da band detail e before e after print que ficam no quick.
aqui, ocorre o mesmo princípio. Pesquise pela classe antecessora das bandas - TQRCustomBand - que deve estar declarada na unit QuickRpt.pas, onde também deve estar a declaração da classe TCustomQuickRep que é a ancestral do TQuickRep.

Lembro-lhe que não há uma "banda detalhe" mas sim, um componente TQRBand que se comportará como tal se sua propriedade BandType estiver configurada com rbDetail - em qualquer outra opção, supostamente você não deveria interferir nos eventos citados.

A idéia é a seguinte:

- Colocar um checkbox no QRPrev.pas e se o mesmo estiver true o relatório sairá no preview a zebrado, com isto ele tera seu default true. Criar um arquivo tipo .ini que ira registrar se o checkbox esta true ou false antes de executar o preview.

não estou certo de que funcionará esta parte (por o chekbox no preview), se a idéia é a de que ao marcar/desmarcar o preview seja "automaticamente" regerado - o método preview do QuickpRep teria que ser chamado novamente (é o que me parece - testar e descobrir) e, se for o caso, aquele esquema que lhe passei pode ficar furado. Inclusive, dando uma conferida no que tenho sobre o quick, achei uma solução melhor para manipular a variável zebrar (veja este post naquele seu tópico).

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Justamente o que disse o Micheus, no Arquivo QRCtrls.pas só que no CREATE

você vai encotrar o código abaixo, ae é só alterar o a linha do transparent:

{ TQRCustomLabel }
constructor TQRCustomLabel.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);
  FAutoSize := true;
  FAutoStretch := false;
  FWordWrap := true;
  FLines := TStringList.Create;
  FFormattedLines := TStringList.Create;
  DoneFormat := false;
  Caption := '';
  Transparent := True; //false;
  UpdatingBounds := false;
  FFontSize := 0;
  FCaptionBased := true;
end;

Abs. Progr'amador.

Editado por Progr'amador
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...