Desde ese código no podemos saber si las consultas o Tablas asociadas al QuickReport están abiertas o no.
Suponer que el usuario ha dado un clic en el ListBox antes de pulsar el boton 1, no está bien, sugiero que añadas:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var xinforme: TQuickRep;
begin
if listbox1.itemindex <>-1 then
begin
xinforme:=TQuickRep(listbox1.Items.Objects[listbox1.ItemIndex]);
xinforme.print
end
else
ShowMessage('seleccione un listado');
end;
Ya que estoy con sugerencias
, la próxima vez que pongas un código, utiliza
[ delphi ] y [ /delphi] en lugar de "code", como ves, sale más bonito
El error que te está dando (216) es un error de protección general. El problema es que el .dpr (Project --> View Source) será más o menos como este:
Código Delphi
[-]
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' ,
Unit2 in 'Unit2.pas' ;
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Y usas la Creación automatica de ventanas.
En Application.Initalize, es donde se encarga de inicializar (zona de initialization) las unidades que forman el proyecto, pero todavía no se han creado ni Form1 ni Form2; como tienes:
Código Delphi
[-]
initialization
form1.ListBox1.Items.AddObject('QuickRep1', form2.QuickRep1);
y Form1 todavía no se ha creado, obtienes el error.
Obviamente la forma de trabajar de
roman no coincide con la tuya. Esa linea la puedes poner en el evento OnCreate del Form2 y ahora si funciona correctamente, (quitandola de la zona initialization).
saludos