gerador de relatório
17/12/2003
0
Qual o melhor gerador de relatórios para ser usado com o Delphi 7 ???
Como faço para que o Rave acesse os dados do meu componente IbQuery... só consigo faze-lo enchergar do Tquery ....
T+
Temos uma regra que pede para os usário não colocarem os títulos
do tópicos em maiúsculas. Editei sua msg e quero pedir que nas
próximas escreva em minúsculas por favor.
zoom
Marcos.rio
Posts
17/12/2003
Marconi
Em vez de esquentar a cabeça tentando fazer os comandos do QuickReport funcionarem direito, resolvi eu mesmo construir os relatórios pondo o que quisesse, na fonte que quisesse, no tamanho que quisesse, no lugar da página que quisesse e mudadando as páginas quando quisesse.
Voce somente usa o Canvas da Impressora. Dá trabalho ir criando as funções que vai necessitar, mas não fica mais escravo das possibilidades de nenhum dos programas.
Se precisar mais dicas eu mando.
Marconi
17/12/2003
Outl@w
A impressão sai a mesma em diferentes tipos de impressoras ou é necessário ajustar o relatório de acordo com o tipo de impressora?
17/12/2003
Fred
coloque no programa 1 query e 1 rvDataSetConnection (DS) da palheta RAVE, ligue o rvds na query, abra o rave e va em novo ==> Direct Data View ==> escolha o rvds do programa e pronto voce ja pode usar os campos com os resultados da query
17/12/2003
Barcelos
Não me chamem de ´do contra´, mas eu não tenho nada contra o QR :!: :!: :!: , ele apenas não faz algumas coisas.....
Mas eu resolvo meus problemas com uma sugestão parecida com a do nosso amigo Marconi.
Existe um componente freeware chamado TMWPrintObject , que utiliza o Cavas para a impressão. Se você usa TPrinter, terá que fazer pouquíssimos ajustes no seu código para obter um resultado de primeira.
Esse componente além de ser muito fácil de usar, vem com arquivo de Help e os fontes todos comentarizados (em inglês).
Uso ele no D5 (deve funcionar nas outras versões do Delphi) e o personalizei para que ficasse com a aparência igual à do QR. Uso os dois para gerar relatórios e o cliente nem nota a diferença.
Se for de seu interesse dê uma olhada. Vale a pena :!:
Espero ter ajudado,
Barcelos
osbarcelos@hotmail.com
17/12/2003
Nebrio
Mas se utilizar o Canvas não terá problema com versões do Win2000 ou XP.
Pois, eu tinha vários relatórios impresso via Canvas que funcionavam muito bem no Win98, porém, no Win2000 deu zica e tive que reformular...com o XP foi o mesmo caso....
T=
Nébrio
17/12/2003
Marconi
Voce monta o seu primeiro relatório testando as soluções para um tipo de impressora. A que voce tem disponível, mas cria função que corrige para qualquer outra considerando sempre page.width e page.height da impressora que estiver rodando, não importanto nem a resolução da mesma.
Voce colona em USES -> Printers
No seu form coloca os objetos TPrinterDialog e TPrinterSetUpDialog que vai encontrar na abeta ´Dialogs´ das ferramentas.
Olha parte de um programa meu que funciona
.... Eu renomei o objeto TPrinterDialog para pd
pd.Options := [poSelection]; // aqui voce entra na propriedade das impressoras
pd.Execute;
with Printer do
begin
Orientation:= poPortrait;
BeginDoc; // aqui começa a montar uma página de impressão
with Canvas do
begin
Font.Name:=´Arial´;
Font.Size:= 8;
Pen.Width:=2;
Imprima(50,50,´Página ´+ copy(rg.Items[rg.itemIndex],1,3));
Imprima(2100,50,´Livro ´+InttoStr(form1.lfs[´livro´]));
FazLinha(40,90,2340,90); // Linha Superior
Font.Size:= 10;
... e assim vai
Voce pode preencher a página em qualquer posição não precisa se sequencial. Para mudar de página use NewPage e para encerrar a impressão Enddoc.
Veja as funções Imprima e FazLinha.
procedure TForm1.Imprima(c,l:integer;t:string);
var
i,j,tv,th:integer;
begin
if Printer.Orientation = poPortrait then
begin
tv:=3309;
th:=2398;
// estes tamanhos de página são da minha impressora
// com eles eu corrijo para qualquer outra
// voce pode utilizar os mesmos
end
else
begin
tv:= 2398;
th:= 3309;
end;
i:=Round((c/th)*printer.pageWidth);
j:=Round((l/tv)*printer.pageHeight);
Printer.Canvas.textout(i,j,t);
end;
Procedure TForm1.FazLinha(c0,l0,c1,l1:integer);
var
x0,y0,x1,y1:integer;
tv,th: integer;
begin
if Printer.Orientation = poPortrait then
begin
tv:=3309;
th:=2398;
end
else
begin
tv:= 2398;
th:= 3309;
end;
x0:=Round((c0/th)*printer.pageWidth);
x1:=Round((c1/th)*printer.pageWidth);
y0:=Round((l0/tv)*printer.pageHeight);
y1:=Round((l1/tv)*printer.pageHeight);
Printer.Canvas.MoveTo(x0,y0);
Printer.Canvas.LineTo(x1,y1);
end;
procedure TForm1.Centra(l:integer;t:string);
// coloca no centro da linha (em pixeis)
var
i,j,tv,th:integer;
begin
if Printer.Orientation = poPortrait then
begin
tv:=3309;
th:=2398;
end
else
begin
tv:= 2398;
th:= 3309;
end;
i:=Round((printer.pageWidth-Printer.Canvas.TextWidth(t))/2);
j:=Round((l/tv)*printer.pageHeight);
Printer.Canvas.textout(i,j,t);
end;
Voce inventa as suas. Mas posso te mandar as outras.
Eu também aprendi muito neste forum
Marconi
18/02/2004
Jep
12/08/2006
Dpinho
ja faz algum tempo que estou tentando criar um gerador em meus programas, onde o usuario escolha a tabela e os campos e va montando o relatorio, depois grava e criar o menu. quero fazer algo donamico, com relatorios e graficos e nem sei por onde começar.
Ja tentei alguns exemplos da revista, mas são simples e não funciona direito
tambem tem a questão do tempo, por isto convido a quem quizer montar um grupo para desenvolver este gerador
Estava pensando em criar um formulario onde o usuario fosse definido os campos e ordenação, mas algo utilizando o mouse.
Seria como o QR ou outro gerador, mas estava pensando algo dentro do software para um usuario leigo
Se alguem quizer, entre em contando no msn
13/08/2006
Marcelo.l
Vcs podem tentar o [b:28b00cfe6e]FreeReport[/b:28b00cfe6e].
É gratuíto e com fontes.
A página de dowload abaixo:
[url]http://www.fast-report.com/en/download/download.php?BID=22[/url]
Mas por experiencia já aviso. Um usuário ´leigo´ dificilmente vai fazer um relatório sozinho. No máximo uma listagem ele vai conseguir fazer. Mas relatórios com relacionamentos entre tabelas...
Bom, só se ele não for leigo.
13/08/2006
Dpinho
A ideia é não utilizar estes geradores, mas criar dentro do proprio software um gerador passo a passo, acho que melhorar estas dicas que tem no clube...
Clique aqui para fazer login e interagir na Comunidade :)