PDA

Ver la Versión Completa : QReport has no parent window


david duarte
11-01-2006, 15:21:31
Hola!!!!

Despues de unas merecidas vacaciones, estoy de vuelta, aunque lamentablemente casi no participo, pero aqui estoy.

Estoy corriendo mi sistema, al visualizar el qreport todo va bien, pero cuando le doy clic en el boton de cerrar, me sale una ventanilla con el siguiente error 'QReport has no parent window', y de ahi ya no pasa, si le doy clic en el boton de aceptar, sigue saliendo el mismo error hasta que se traba la computadora, alguien sabe porque??.

Tengo tres tipos de accesos, el usuario, el analista y el jefe(como siempre tiene mas privilegios), pero solamente cuando entro como jefe, me marca error al salir del qreport, si entro como usuario o como analista, no pasa nada todo va bien.

pero en un rato pongo una parte del codigo, porque no me deja abrir la forma del qreport.

Gracias!!!!

Alguien sabe o tiene alguna experiencia en estos casos???

Cómo te sientes hoy??

Aqui pongo una parte del codigo

procedure Tfrm_reporte2.QuickRep1AfterPreview(Sender: TObject);
var
contlabels : Integer;
begin
frm_reporte2.Hide; //ocultamos la forma donde se encuentra el reporte
contlabels := frm_reporte2.QRBResultados.ComponentCount;// contamos los componentes en este caso son las labels
while contlabels > 0 do// ciclo para liberar las labels
Begin
frm_reporte2.QRBResultados.Components[contlabels-1].Free;
contlabels:= frm_reporte2.QRBResultados.ComponentCount;
end; //while contlabels > 0 do
frm_reporte2.qrlaboratorio.Caption := 'Laboratorio ';
case form_opcion.Label1.Caption[1] of
'T':
Begin
frmana.Timer_text.Enabled := True;
frmana.Show;
end;
'Q':
Begin
frmana_qui.Timer_quimico.Enabled := True;
frmana_qui.Show;
end;
'I':
Begin
frmana_iny.Timer_iny.Enabled := True;
frmana_iny.Show;
end;
'S':
Begin
frmana_soplado.Timer_soplado.Enabled := True;
frmana_soplado.Show;
end;
end; //case form_opcion.Label1.Caption[1] of
frm_reporte2.qrlaboratorio.Caption := 'Laboratorio';
end; //procedure Tfrm_reporte2.QuickRep1AfterPreview(Sender: TObject);

otra parte del codigo cuando se crea el qreporte


procedure Tfrm_reporte2.FormCreate(Sender: TObject);
Var
b : Boolean;
fol : String[9];
cont, campos, contmuestras,contana, lineas : Integer;
begin
lineas :=0;
contana :=0;
cont :=0;
campos :=2;
contmuestras :=0;
SetLength(mem,10);
{si el laboratorio seleccionado es Textil}
case form_opcion.label1.Caption[1] of
'T':
Begin
modulotablas.resul_textil.Refresh;
{buscamos el folio que quiere ver el usuario}
b := modulotablas.tbltextil.Locate('LabFolio', form_opcion.label1.caption, [locaseInsensitive]);
{si lo encuentra}
if (b) then
Begin
{primero se muestra la parte de la solicitud... analisis, solicitante, etc...}
frm_reporte2.qrlaboratorio.Caption := frm_reporte2.qrlaboratorio.Caption + ' Textil';
frm_reporte2.qrmlblfecha.Caption := modulotablas.tbltextil.FieldByName('Fecha').value;
frm_reporte2.qrmlblfolio.Caption := modulotablas.tbltextil.FieldByName('LabFolio').value;
frm_reporte2.qrmlblsolicitante.Caption := modulotablas.tbltextil.FieldByName('Solicitante').value;
frm_reporte2.qrmlbltipomuestra.Caption := modulotablas.tbltextil.FieldByName('Tipo_muestra').value;
frm_reporte2.qrmlbldeptosol.Caption := modulotablas.tbltextil.FieldByName('Depto_sol').value;
frm_reporte2.qrmlblpruebasol.Caption := modulotablas.tbltextil.FieldByName('Pruebas').value;
frm_reporte2.qrmlblobjetivo.Caption := modulotablas.tbltextil.FieldByName('Objetivo_trab').value;
frm_reporte2.qrmlblfechaent.Caption := modulotablas.tbltextil.FieldByName('Fecha_ent').value;
frm_reporte2.qrmobspanalistas.Lines.Text := modulotablas.tbltextil.FieldByName('Observaciones_textil').AsString;
frm_reporte2.QRMresul.Lines.Text:= modulotablas.tbltextil.FieldByName('Obs_analisis').AsString;
left := 5;
b := modulotablas.resul_textil.Locate('LabFolio',form_opcion.label1.Caption,[lopartialkey]);
if (b) then
Begin
while campos < modulotablas.resul_textil.FieldCount-1 do
Begin
if (modulotablas.resul_textil.FieldByName(modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName).value <>'x') then
Begin
lab := TQRLabel.Create(QRBSET_info);
lab.Font.Size := 9;
lab.Left := left;
lab.Top := 230;
lab.Caption := modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName;
lab.Visible := True;
lab.parent := QRBSET_info;
mem[contana] := TQRMemo.Create(QRBResultados);
mem[contana].Font.Size := 9;
mem[contana].Left := left;
mem[contana].AutoStretch := True;
mem[contana].Top := 5;
mem[contana].Parent := QRBResultados;
inc(contana);
left := left+FontWidth(lab.Font,lab.Caption);
contmuestras := contmuestras +1;
end; //if (modulotablas.resul_textil.FieldByName(modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName).value <>'x') then
inc(campos);
end; //while campos < modulotablas.resul_textil.FieldCount-1 do
{************************ ANALISIS EXTRAS **************}
if (modulotablas.tbltextil.FieldByName('Analisis_extras').value = 1) then
Begin
b := modulotablas.ana_ex.Locate('Folio',form_opcion.label1.Caption,[lopartialkey]);
if (b) then
Begin
//ciclo para mostrar el nombre de los analisis extras
while ((modulotablas.ana_ex.FieldByName('Folio').value = form_opcion.Label1.Caption) and (modulotablas.ana_ex.FieldByName('Numero').value = '01')) do
Begin
lab := TQRLabel.Create(QRBSET_info);
lab.Font.Size := 9;
lab.Left := left;
lab.Top := 230;
lab.Caption := modulotablas.ana_ex.FieldByName('Nombre_analisis').value;
lab.Visible := True;
lab.parent := QRBSET_info;
mem[contana] := TQRMemo.Create(QRBResultados);
mem[contana].Font.Size := 9;
mem[contana].Caption := modulotablas.ana_ex.FieldDefs.Items[campos].DisplayName;
mem[contana].Left := left;
mem[contana].AutoStretch := True;
mem[contana].Alignment := taCenter;
mem[contana].Top := 5;
mem[contana].Parent := QRBResultados;
inc(contana);
left := left+FontWidth(lab.Font,lab.Caption);
contmuestras := contmuestras +1;
modulotablas.ana_ex.Next;
end;
modulotablas.ana_ex.Next;
end;
modulotablas.ana_ex.First;
end;
lab := TQRLabel.Create(QRBSET_info);
lab.left := left;
lab.Caption := '';
lab.Parent := QRBSET_info;
modulotablas.resul_textil.Next;
campos := 2;
end; //if (b) resul_textil then
campos :=0 ;
modulotablas.resul_textil.First;
{aqui empieza la parte de resultados de la solicitud}
fol := modulotablas.resul_textil.FieldByName('LabFolio').value;
cont := 2; //cont1 se utiliza para manejar el ciclo del numero de muestras del pre
while fol <> form_opcion.label1.Caption do
Begin
modulotablas.resul_textil.Next;
fol := modulotablas.resul_textil.FieldByName('LabFolio').value;
end; //while fol <> form_opcion.label1.Caption do
{*********************************************************************
**** ciclo para mostrar el resultado de los analisis ****************
******************* que seleciono el usuario *********************
********************************************************************}
campos :=2;
contana :=0;
b := modulotablas.resul_textil.Locate('LabFolio', form_opcion.label1.Caption,[lopartialkey]);
if (b) then
Begin
while ((form_opcion.Label1.Caption = modulotablas.resul_textil.FieldByName('LabFolio').value) and (modulotablas.resul_textil.Eof <> True)) do
Begin
while campos < modulotablas.resul_textil.FieldCount -2 do
Begin
if (modulotablas.resul_textil.FieldByName(modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName).value <> 'x') then
Begin
if (modulotablas.resul_textil.FieldByName(modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName).value <> 'o') then
Begin
mem[contana].Lines.Add(modulotablas.resul_textil.FieldByName(modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName).value);
inc(contana);
end //si el valor del campo es diferente de 'o'
else
if (modulotablas.resul_textil.FieldByName(modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName).value = 'o') then
Begin
mem[contana].Lines.Add('--');
inc(contana);
end;
end; //if (modulotablas.resul_textil.FieldByName(modulotablas.resul_textil.FieldDefs.Items[campos].DisplayName).value <> 'x') then
inc(campos);
end; //while campos < modulotablas.resul_textil.FieldCount -2 do
campos := 2;
contana :=0;
modulotablas.resul_textil.Next
end; //while form_opcion.Label1.Caption = modulotablas.resul_textil.FieldByName('LabFolio').value do
//ciclo para rellenar con lineas en blanco los memos
end;
modulotablas.ana_ex.First;
cont := 0;
b := modulotablas.ana_ex.Locate('Folio',form_opcion.label1.Caption,[lopartialkey]);
if (b) then
Begin
if (modulotablas.ana_ex.FieldByName('Folio').value = form_opcion.Label1.Caption) then
Begin
while mem[cont] <> Nil do
Begin
if (mem[cont].Name = modulotablas.ana_ex.FieldDefs.Items[cont].DisplayName) then
lineas := mem[cont].Lines.Count;
if lineas = 0 then
mem[cont].Lines.Add(modulotablas.ana_ex.FieldByName(modulotablas.ana_ex.FieldDefs.Items[cont].DisplayName).value);
inc (cont);
end;
end;
end;
while mem[0].Lines.Count < 43 do
mem[0].Lines.Add('');
end //if (b) en la tabla textil
end; //case of 'T'



case form_opcion.Label1.Caption[1] of
'T':
Begin
frmana.Timer_text.Enabled := True;
frmana.Show;
end;

en este pedazo de codigo es donde me marca el error

al momento de entrar en la lines de frmana.show, es donde me sale el error del qreport has no parent window.

david duarte
19-01-2006, 15:06:07
La verdad es que nunca le encontre el error, pero bueno, lo hice de otra manera, primero puse todo en un Stringgrid1 y postrirmente de ahi lo fui pasando al reporte, y ya no me marca ese error, pero creo que es porque uso( en algun lado del sistema) alguna instruccion de ShowModal. pero sigo sin entender
De todos modos los que se tomaron la delicadesa de leerlo, Muchas gracias.

Cómo te sientes hoy?