Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 19-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Intuía lo que estaba pasando, por eso mismo añadí dataM. a todas las instrucciones (de hecho me harté muy mucho ).
Cuando tú haces esto:
Código Delphi [-]
if TipoFactura = 'Agrupada' then
  Begin
    try
    Titulo := TRContinuaTitulo1.Create(Nil);
estás creando el informe "Titulo" que está en el qrCompositeReport. Sin embargo, cuando haces esto:
Código Delphi [-]
procedure TDataM.ReporteadorAddReports(Sender: TObject);
begin
   Reporteador.Reports.Add(Titulo);
Estas añadiendo el Titulo que pertenece al DataM, un informe que todavía no ha sido creado, por eso obtienes una violación de acceso a memoria.

Si tu código compilaba, es que tienes el informe "Titulo" declarado en ¡¡los dos sitios !! en el qrCompositeReport y también en el DataM, y para delphi, son 2 informes distintos, aunque se llamen igual (Titulo) y sean del mismo tipo (TRContinuaTitulo1).



Si declaras Agrupado debajo de implementation, entonces se convierten en variables privadas, es decir, no se pueden ver (ni llamar) desde fuera de ese .pas. Esto implica que al intentar acceder desde tu unidad del qrComposite el compilador no sepa donde está "Agrupado" y al intentar acceder a cualquier propiedad te de una violación de acceso a memoria.

Soluciones hay muchas, pero es difícil adivinar como tienes planteado tu programa y lo que quieres hacer.

Si solo vas a usar titulo, Agrupado, etc en el qrCompositeReport, entonces mueve todo a esa unidad, las variables, los "uses", etc, y hazlo todo allí. Así no tendrás que hacer referencia al DataM para nada.

Otra solución:
Cita:
Lepe gracias por tus aportes pero te cuento q me ha surgido un problema me dices que las variables deben estar antes de implementation pero la declaración de los uses se hace despues y por eso no me reconoce el tipo de variable:
No tiene por qué, arriba del todo, en el apartado "interface" también tienes otra zona de "uses" donde puedes declarar variables que sí se verán (y sí se pueden llamar) desde fuera del archivo. Pero claro, yo no puedo adivinar si te dará referencias circulares (inténtalo, si delphi te muestra un mensaje de error con referencias circulares esta solución no te sirve).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
DBAware en tiempo de ejecución Chandra Conexión con bases de datos 3 09-07-2007 16:10:39
Tabla en tiempo de ejecucion noshy SQL 1 24-07-2006 00:39:31
Menús en tiempo de ejecución pepetonic2001 OOP 21 22-06-2006 14:51:54
Componentes en Tiempo de Ejecucion Caro Varios 2 16-05-2005 16:49:01
Tiempo de ejecucion? st7 Varios 3 11-05-2004 22:03:28


La franja horaria es GMT +2. Ahora son las 13:30:34.


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