Hola Jesús.
Bueno, me ha confundido bastante tu mensaje, de hecho no entiendo tu pregunta, lo que es más no veo ninguna pregunta.
Así que ahora pregunto yo, ¿Lo que realmente quieres es utilizar un formulario personalizado para mostrar la vista previa de un reporte?
Porque, según el título tu pregunta es referente a QRCreateList
Bueno responderé a la cuestión del formulario personalizado:
Tienes que crear una interfaz para mostrar el formulario, esto lo consigues derivando de la clase TQRPreviewInterface y creando los métodos Show y ShowModal
Paso 1:
Código Delphi
[-]
TQRCustomPreviewInterface = class(TQRPreviewInterface)
public
function Show(AQRPrinter : TQRPrinter) : TWinControl; override;
function ShowModal(AQRPrinter : TQRPrinter): TWinControl; override;
end;
no olvides incluir a
QRPrntr en uses.
Después implementas los métodos Show y ShowModal
Paso 2
Código Delphi
[-]
function TQRCustomPreviewInterface.Show(AQRPrinter: TQRPrinter): TWinControl;
var
frm : TCustPreview;
begin
frm := TCustPreview.Create(Application, AQRPrinter);
frm.Show;
Result := frm;
end;
function TQRCustomPreviewInterface.ShowModal(AQRPrinter: TQRPrinter): TWinControl;
var
frm : TCustPreview;
begin
frm := TCustPreview.Create(Application, AQRPrinter);
frm.ShowModal;
Result := frm;
end;
En el código anterior donde aparece TCustPreview coloca el nombre de tu formulario personalizado.
Esto lo puedes guardar un una unit por separado.
Después tienes que registrar la interface con la función RegisterPreviewClass que se encuentra en la unidad
QRPrntr no olvides incluirla en uses.
Paso 3:
Código Delphi
[-]
RegisterPreviewClass(TQRCustomPreviewInterface);
Este código lo pones al iniciar tu aplicación, con esto lográs que cada vez que invoques al método Preview o PreviewModal se hace una llamada a tu formulario.
Una cosa más, debes redefinir el constructor de tu formulario personalizado para que responda correctamente, esto lo lográs con el siguiente código.
Código Delphi
[-]
{$WARNINGS OFF}
TCustPreview = class(TForm)
QRPreview1: TQRPreview;
procedure CustPreviewClose(Sender: TObject; var Action: TCloseAction);
private
fQRPrinter : TQRPrinter;
public
constructor Create(AOwner : TComponent; AQRPrinter : TQRPrinter); virtual;
end;
{$WARNINGS ON}
constructor TCustPreview.Create(AOwner: TComponent;AQRPrinter: TQRPrinter);
begin
inherited Create(AOwner);
fQRPrinter := AQRPrinter;
QRPreview1.QRPrinter := AQRPrinter;
end;
procedure TCustPreview.CustPreviewClose(Sender: TObject;var Action: TCloseAction);
begin
fQRPrinter.ClosePreview(Self);
Action := caFree;
end;
Espero que sea útil, un saludo