Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2011
PittyDelphi PittyDelphi is offline
Registrado
 
Registrado: jul 2010
Posts: 2
Poder: 0
PittyDelphi Va por buen camino
Question Llamada entre ventana usando paquetes.

Que tal?

Estoy usando un paquete (.bpl) que contiene todos los formularios que se usan en el proyecto. El problema se da así:

En el formulario 1 instancio el 2:

Código Delphi [-]
fmFormularioDos:= TfmFormularioDos.Create(nil);

Ahora, cuando desde el formulario 2 quiero llamar al 1 o algún componente de este me da un error. Por ejemplo:

Código Delphi [-]
if fmFormularioUno.cActividad.State = dsInsert then
   begin
      Self.Caption := 'Nueva Actividad';
      cbTipo.ItemIndex := 0;
      fmFormularioUno.cActividad.FieldByName('codactividad').Value := 0;
 end;

Usando un Try para obtener el mensaje técnico lo que obtengo es:

"AccessViolation at address 005BD9D0 in module 'Fuentes.bpl'. Read of address 000002F8'.

La dirección de memoria es donde esta la llamada al formulario 1. Lo que menciona de 'Fuentes.bpl' es lo que mencione donde están todos los formularios/fuentes que se usan en el proyecto.

Agradezco su ayuda. Pitty.

Última edición por roman fecha: 26-01-2011 a las 22:02:34. Razón: Corregi etiquetas
Responder Con Cita
  #2  
Antiguo 27-01-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.287
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Normalmente los errores de Access Violation dan cuando estás accediendo a un elemento/objeto que no está creado o que ya se ha destruído.

Estaría bien saber cómo estás cargando los paquetes (estático o dinámico) y cómo están linkados.

¿Al debuggedo paso a paso? a ver en qué línea exactamente "peta".
Otra posibilidad es que crees un pequeño proyecto con un par de formularios vacíos y donde hagas las mismas operaciones para ver algo de código, sino es difícil saber donde puede estar el fallo.

Las líneas que pones no parecen ser incorrectas, el problemas puede estar en cómo las utlices y dónde. ?¿?¿?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 27-01-2011 a las 10:25:26.
Responder Con Cita
  #3  
Antiguo 27-01-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Yo tuve un problema similar, use eurekalog para revisar el codigo y vi que el error me lo daba en una llmada a un componente del form en el cual ponia el nombre del form delante.
Podrias probar si anulando lo que he subrayado te funciona.
Código Delphi [-]
if fmFormularioUno.cActividad.State = dsInsert then   
begin      Self.Caption := 'Nueva Actividad';      
cbTipo.ItemIndex := 0;      
fmFormularioUno.cActividad.FieldByName('codactividad').Value := 0; 
end;
Saludos

Josep
Responder Con Cita
  #4  
Antiguo 27-01-2011
PittyDelphi PittyDelphi is offline
Registrado
 
Registrado: jul 2010
Posts: 2
Poder: 0
PittyDelphi Va por buen camino
Muchas gracias por sus respuestas! Pasó a comentar;

Cita:
Empezado por Neftali Ver Mensaje
Normalmente los errores de Access Violation dan cuando estás accediendo a un elemento/objeto que no está creado o que ya se ha destruído.

Estaría bien saber cómo estás cargando los paquetes (estático o dinámico) y cómo están linkados.

¿Al debuggedo paso a paso? a ver en qué línea exactamente "peta".
Otra posibilidad es que crees un pequeño proyecto con un par de formularios vacíos y donde hagas las mismas operaciones para ver algo de código, sino es difícil saber donde puede estar el fallo.

Las líneas que pones no parecen ser incorrectas, el problemas puede estar en cómo las utlices y dónde. ?¿?¿?
Sí, hice un debug paso a paso y me encontré que el error estaba cuando llamaba a la otra ventana, sea para lo que sea. La carga es dinámica. El paquete se carga al comienzo y va llamando dinámicamente a las ventanas (la ventaja del paquete es no cargar todos los formularios en memoria al iniciar la aplicación). El proyecto es un sistema ya hecho que se esta "empaquetando", son cientos de ventanas, pero es un solo paquete para todo.

Cita:
Yo tuve un problema similar, use eurekalog para revisar el codigo y vi que el error me lo daba en una llmada a un componente del form en el cual ponia el nombre del form delante.
Podrias probar si anulando lo que he subrayado te funciona.
Exacto! Eso me pasa cuando llamo algo en el mismo formulario, como por ejemplo lo de 'cActividad' que ponía en el ejemplo. Sacando la primer parte funciona. Pero cuando esta en la otra ventana no da resultado.

Mi sospecha es que el paquete usa los hilos de forma diferente y como que no queda registrado, por eso no lo encuentra. Quizás haya que poner algo para que eso no ocurra, (por ahí leí que decía de poner TFormularioUno.Create(AHandler) al crearlo pero no encuentro ese AHandler...). Es ahí donde se me quemaron los libros. Los modulos son la exepción ya que lo creo al abrir la ventana y después funciona lo más bien, se pueden hacer llamadas a los componentes de consultas a base de datos (aunque no siempre funcionan bien los updates al formulario).

Gracias de nuevo por la ayuda que me puedan dar!
Responder Con Cita
Respuesta



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
Insertar llamada a menú desde ventana Daniel316 C++ Builder 2 14-07-2008 17:22:51
Como puedo evitar que cierren una ventana usando ALT-F4 flystar Varios 7 29-10-2007 19:52:20
No se como llamar a esto... ventana usando overlay o algo asi LordVermiis Gráficos 7 30-08-2006 01:34:26
Cómo registrar paquetes para que aparezcan en la ventana de Inicio de Delphi 2005 Jesús Pena Varios 1 30-11-2005 06:43:47
herencia entre paquetes Nidia H. Ochoa OOP 9 26-02-2004 17:08:07


La franja horaria es GMT +2. Ahora son las 10:23:52.


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