Quick Report / ForceNewPage
Bom dia
Estou tentando fazer o meu relatorio. Ja evolui mas ainda estou com um pequeno problema.
Tenho uma tabela com a seguinte estrutura
sendo A locus A
B locus B
........
A1 alelo A1
A2 alelo A2
B1 alelo B1
B2 alelo B2
.....
....
Eu gostaria que saisse desta forma
ou seja para cada cultivar, em uma página separada, só se imprimiria os locus onde os alelos
estao presentes (com valores)
Inicialmente criei uma variavel aQRLabel como abaixo
Depois no evento BeforePrint do QuickReport criei os QRLabel necessarios como abaixo
Criei alem da banda title uma banda detail (QRBand2) onde coloquei os cabeçalhos
Configurei as propriedades ForceNewPage e HasChild como True o no evento BeforePrint coloquei
a seguinte programação
Como com o uso da ForceNewPage na procedure criava uma pagina antes da impressao dos dados
dos primeiros 22 locus eu resolvi só por uma variavel global que indicasse que em seguida deveria
ter uma nova pagina. Esta variavel é NPage (Boolean).
Em seguida no evento AfterPrinter escrevi a seguinte procedure
com isto já consigoConsegui criar a 2102 paginas correspondente aos 2102 registros e mostrando
somente os allelos com valores e criar a página seguinte dos registros com mais de 22 locus e
imprimir os valores dos 22 primeiros na primeira página da registro que eles pertencem. O ultimo
problema é fazer imprimir os restantes dos locus (acima de 22) na nova página criada.
Troquei o local das duas procedura anteriores da banda Detail para a Child.
Alguma sugestao (qualquer uma será bem vinda pois estou muito tempo nela)
Ja agradeço
[b:60e16f7d09][color=red:60e16f7d09]Editado pelo Moderador (AZ) para inserir BBCode e facilitar a leitura.[/color:60e16f7d09][/b:60e16f7d09]
Estou tentando fazer o meu relatorio. Ja evolui mas ainda estou com um pequeno problema.
Tenho uma tabela com a seguinte estrutura
Cultivar A1 A2 B1 B2 C1 C2 CV1 - - 12 14 - - CV2 16 17 - - 8 9 CV3 21 21 14 16 6 5
sendo A locus A
B locus B
........
A1 alelo A1
A2 alelo A2
B1 alelo B1
B2 alelo B2
.....
....
Eu gostaria que saisse desta forma
Cultivar CV1 // título Locus Alelo1 Alelo2 B 12 14
ou seja para cada cultivar, em uma página separada, só se imprimiria os locus onde os alelos
estao presentes (com valores)
Inicialmente criei uma variavel aQRLabel como abaixo
var Frm_Rel_RegT: TFrm_Rel_RegT; aQRLabel: array of TQRLabel; NPage : Boolean;
Depois no evento BeforePrint do QuickReport criei os QRLabel necessarios como abaixo
procedure TFrm_Rel_RegT.QuickRep2BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); var I : Integer; begin SetLength(aQRLabel, (Table1.FieldCount - 3) div 2); for I := 0 to Length(aQRLabel) -1 do begin aQRLabel[i] := TQRLabel.Create(ChildBand1); aQRLabel[i].Parent := ChildBand1; end; end;
Criei alem da banda title uma banda detail (QRBand2) onde coloquei os cabeçalhos
Cultivar CV1 // título Locus Alelo1 Alelo2
Configurei as propriedades ForceNewPage e HasChild como True o no evento BeforePrint coloquei
a seguinte programação
procedure TFrm_Rel_RegT.ChildBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); var i : Integer; campo : Integer; cont : Integer; altura : Integer; begin campo := 1; cont := 0; altura := 0; for i := 0 to ((Table1.FieldCount - 3) div 2) - 1 do begin if Table1.Fields[campo].AsString <> ´´ then begin aQRLabel[cont].Caption := Principal.DBGrid1.Columns[campo].Title.Caption; aQRLabel[cont].Left := 112; aQRLabel[cont].Top := 1 + 30 * altura; if altura = 22 then // locus por pagina begin NPage := True; altura := 0; Break; end else begin cont := cont + 1; altura := altura + 1; end; end; inc(campo, 2); end; for I := cont to Length(aQRLabel) -1 do aQRLabel[i].Caption := ´´; end;
Como com o uso da ForceNewPage na procedure criava uma pagina antes da impressao dos dados
dos primeiros 22 locus eu resolvi só por uma variavel global que indicasse que em seguida deveria
ter uma nova pagina. Esta variavel é NPage (Boolean).
Em seguida no evento AfterPrinter escrevi a seguinte procedure
procedure TFrm_Rel_RegT.ChildBand1AfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean); begin if NPage then begin QuickRep2.NewPage; NPage := False end; end;
com isto já consigoConsegui criar a 2102 paginas correspondente aos 2102 registros e mostrando
somente os allelos com valores e criar a página seguinte dos registros com mais de 22 locus e
imprimir os valores dos 22 primeiros na primeira página da registro que eles pertencem. O ultimo
problema é fazer imprimir os restantes dos locus (acima de 22) na nova página criada.
Troquei o local das duas procedura anteriores da banda Detail para a Child.
Alguma sugestao (qualquer uma será bem vinda pois estou muito tempo nela)
Ja agradeço
[b:60e16f7d09][color=red:60e16f7d09]Editado pelo Moderador (AZ) para inserir BBCode e facilitar a leitura.[/color:60e16f7d09][/b:60e16f7d09]
Carlos Machado
Curtidas 0
Respostas
Carlos Machado
14/10/2004
[quote:498d7e0580=´Carlos Alberto Machado´]
Sobe
Bom dia
Eu uso o Delphi 5 e o QuickReport 6.2
No assunto coloquei ForceNewPage pois inicialmente em vez de usar NewPage usei ForceNewPage. Neste caso criou uma segunda pagina so que na primeira a parte referente ao ChildBand ficou em branca e a segunda ficou com os dadoa referente as primeiros 22 locos, que deveriam ficar na primeira página, enquanto que os dados apos os 22 também não apareceram.
Estou tentando fazer o meu relatorio. Ja evolui mas ainda estou com um pequeno problema.
Tenho uma tabela com a seguinte estrutura
sendo A locus A
B locus B
........
A1 alelo A1
A2 alelo A2
B1 alelo B1
B2 alelo B2
.....
....
Eu gostaria que saisse desta forma
ou seja para cada cultivar, em uma página separada, só se imprimiria os locus onde os alelos
estao presentes (com valores)
Inicialmente criei uma variavel aQRLabel como abaixo
Depois no evento BeforePrint do QuickReport criei os QRLabel necessarios como abaixo
Criei alem da banda title uma banda detail (QRBand2) onde coloquei os cabeçalhos
Configurei as propriedades ForceNewPage e HasChild como True o no evento BeforePrint coloquei
a seguinte programação
Como com o uso da ForceNewPage na procedure criava uma pagina antes da impressao dos dados
dos primeiros 22 locus eu resolvi só por uma variavel global que indicasse que em seguida deveria
ter uma nova pagina. Esta variavel é NPage (Boolean).
Em seguida no evento AfterPrinter escrevi a seguinte procedure
com isto já consigoConsegui criar a 2102 paginas correspondente aos 2102 registros e mostrando
somente os allelos com valores e criar a página seguinte dos registros com mais de 22 locus e
imprimir os valores dos 22 primeiros na primeira página da registro que eles pertencem. O ultimo
problema é fazer imprimir os restantes dos locus (acima de 22) na nova página criada.
Troquei o local das duas procedura anteriores da banda Detail para a Child.
Alguma sugestao (qualquer uma será bem vinda pois estou muito tempo nela)
Ja agradeço
[b:498d7e0580][color=red:498d7e0580]Editado pelo Moderador (AZ) para inserir BBCode e facilitar a leitura.[/color:498d7e0580][/b:498d7e0580][/quote:498d7e0580]
Sobe
Bom dia
Eu uso o Delphi 5 e o QuickReport 6.2
No assunto coloquei ForceNewPage pois inicialmente em vez de usar NewPage usei ForceNewPage. Neste caso criou uma segunda pagina so que na primeira a parte referente ao ChildBand ficou em branca e a segunda ficou com os dadoa referente as primeiros 22 locos, que deveriam ficar na primeira página, enquanto que os dados apos os 22 também não apareceram.
Estou tentando fazer o meu relatorio. Ja evolui mas ainda estou com um pequeno problema.
Tenho uma tabela com a seguinte estrutura
Cultivar A1 A2 B1 B2 C1 C2 CV1 - - 12 14 - - CV2 16 17 - - 8 9 CV3 21 21 14 16 6 5
sendo A locus A
B locus B
........
A1 alelo A1
A2 alelo A2
B1 alelo B1
B2 alelo B2
.....
....
Eu gostaria que saisse desta forma
Cultivar CV1 // título Locus Alelo1 Alelo2 B 12 14
ou seja para cada cultivar, em uma página separada, só se imprimiria os locus onde os alelos
estao presentes (com valores)
Inicialmente criei uma variavel aQRLabel como abaixo
var Frm_Rel_RegT: TFrm_Rel_RegT; aQRLabel: array of TQRLabel; NPage : Boolean;
Depois no evento BeforePrint do QuickReport criei os QRLabel necessarios como abaixo
procedure TFrm_Rel_RegT.QuickRep2BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); var I : Integer; begin SetLength(aQRLabel, (Table1.FieldCount - 3) div 2); for I := 0 to Length(aQRLabel) -1 do begin aQRLabel[i] := TQRLabel.Create(ChildBand1); aQRLabel[i].Parent := ChildBand1; end; end;
Criei alem da banda title uma banda detail (QRBand2) onde coloquei os cabeçalhos
Cultivar CV1 // título Locus Alelo1 Alelo2
Configurei as propriedades ForceNewPage e HasChild como True o no evento BeforePrint coloquei
a seguinte programação
procedure TFrm_Rel_RegT.ChildBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); var i : Integer; campo : Integer; cont : Integer; altura : Integer; begin campo := 1; cont := 0; altura := 0; for i := 0 to ((Table1.FieldCount - 3) div 2) - 1 do begin if Table1.Fields[campo].AsString <> ´´ then begin aQRLabel[cont].Caption := Principal.DBGrid1.Columns[campo].Title.Caption; aQRLabel[cont].Left := 112; aQRLabel[cont].Top := 1 + 30 * altura; if altura = 22 then // locus por pagina begin NPage := True; altura := 0; Break; end else begin cont := cont + 1; altura := altura + 1; end; end; inc(campo, 2); end; for I := cont to Length(aQRLabel) -1 do aQRLabel[i].Caption := ´´; end;
Como com o uso da ForceNewPage na procedure criava uma pagina antes da impressao dos dados
dos primeiros 22 locus eu resolvi só por uma variavel global que indicasse que em seguida deveria
ter uma nova pagina. Esta variavel é NPage (Boolean).
Em seguida no evento AfterPrinter escrevi a seguinte procedure
procedure TFrm_Rel_RegT.ChildBand1AfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean); begin if NPage then begin QuickRep2.NewPage; NPage := False end; end;
com isto já consigoConsegui criar a 2102 paginas correspondente aos 2102 registros e mostrando
somente os allelos com valores e criar a página seguinte dos registros com mais de 22 locus e
imprimir os valores dos 22 primeiros na primeira página da registro que eles pertencem. O ultimo
problema é fazer imprimir os restantes dos locus (acima de 22) na nova página criada.
Troquei o local das duas procedura anteriores da banda Detail para a Child.
Alguma sugestao (qualquer uma será bem vinda pois estou muito tempo nela)
Ja agradeço
[b:498d7e0580][color=red:498d7e0580]Editado pelo Moderador (AZ) para inserir BBCode e facilitar a leitura.[/color:498d7e0580][/b:498d7e0580][/quote:498d7e0580]
GOSTEI 0