Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 21-01-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
La forma mas comoda es usar herencia visual

Creas un VCL Form y pones el TQuickRep

Despues, se redefine el constructor para para que tambien acepte una instancia de TDataSet; asi siempre todos tus reportes van a "pedir" el DataSet en cuestion cuando son creados, y si no se los das, elevaran una excepcion:

Código Delphi [-]
unit Unit1;

interface

uses
  Classes,
  Forms,
  Controls,
  ExtCtrls,
  DB,
  QuickRpt;

type
  // clase abstracta: si se intenta crear una instancia, elevara una excepcion, estamos obligados a
  // diseñar una nueva clase que herede de esta
  TReporteBase = class abstract(TForm)
    QuickRep1: TQuickRep;
  // visibilidad privada; solamente esta clase puede ver la variable FDataSet
  strict private
    FDataSet: TDataSet;
  // visibilidad protegida; solamente las clases que hereden de TReporteBase van a poder ver esta propiedad
  // esto lo decide cada uno si "desde afuera" pueden acceder al DataSet o no
  strict protected
    property DataSetGenerico: TDataSet read FDataSet;
  public
    // reintroduce esta para ocultar el constructor de TForm, el cual no esta marcado como virtual
    constructor Create(AOwner: TComponent; ADataSet: TDataSet); reintroduce;
  end;

implementation

{$R *.dfm}

uses
  SysUtils;

{ TReporteBase }

constructor TReporteBase.Create(AOwner: TComponent; ADataSet: TDataSet);
begin
  if not Assigned(ADataSet) or ADataSet = NIL then
    raise Exception.CreateFmt('Error al crear %s, el parametro ADataSet no esta inicializado', [ClassName]);

  inherited Create(AOwner);
  FDataSet := ADataSet;
end;

end.

Para usar "esto de la herencia visual", simplemente te vas a New -> Other y en el TreeView seleccionas Delphi Projects -> Inheritable Items -> ReporteBase

Asegurate que en el RadioGroup de abajo este marcado "inherit"

Esto te creara un nuevo Form que hereda de ReporteBase y tendras el QuickReport listo para empezar a trabajar y la referencia al DataSet anterior

De hecho, en el formulario ReporteBase, podrias ir colocando propiedades y comportamiento comun a todos tus reportes; por ejemplo, podrias poner que en el pie de cada pagina, salga una banda con los datos de la empresa

Tambien podrias dejar configurado todos los filtros (para exportar a los distintos formatos), el tamaño de la vista previa, cantidad de hojas a imprimir por defecto, impresora a usar, etc etc, y todo esto lo haces una vez y siempre y cuando heredes de este form, ya tendras todo eso hecho
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enumerado genérico como parámetro elrayo76 Varios 19 27-06-2015 00:41:36
Creador generico de formulario. movorack OOP 8 02-03-2010 15:16:12
procedimiento de asignación genérico gushynet OOP 23 09-09-2008 10:50:15
Apuntar a un tipo genérico Guillermo80 Varios 4 09-03-2008 11:48:22
reporte generico piyugo Impresión 8 07-05-2004 18:20:03


La franja horaria es GMT +2. Ahora son las 17:35:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi