Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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-10-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Problemas accediendo a otro Form

Tengo 3 Forms, A,B y C. A es el principal y es el unico que se crea al ejecutar la aplicació.

B se crea desde A:

Código Delphi [-]
 
B:=TB.Create(self);
B:=Show;
B tiene una Memory Tabla (RxMemorData)

y C se crea desde B:

Código Delphi [-]
 
C:=TB.Create(self);
C:=Show;
C tambien tiene una Memory Tabla (RxMemorData)

Resulta que si quiero acceder a la tabla en memoria de B, me tira la exception
"Error bla bla...in molule 0124SXXXX bla bla".
Probando, me di cuenta que no puedo acceder a nada de B, todo lo que intente cambiar en B, me tira el mismo error.
B, tiene declarado en uses UnitC; y C tiene declarado uses UnitB;
Creo las formas, y al cerrar, las libero y destruyo sin dificultad, pero no se porque no me deja acceder, que estoy haciendo mal??? no puedo ni cambiar esto desde C:

Código Delphi [-]
B.Label1.Caption:='te cambio';

NOTA: estoy con Delphi 5
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 26-10-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Esas variables "B" y "C" son "globales"? Si son locales es normal que no estén disponibles más allá del método en que se usan...
Responder Con Cita
  #3  
Antiguo 27-10-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,

¿Esas variables "B" y "C" son "globales"? Si son locales es normal que no estén disponibles más allá del método en que se usan...
B = Form2, C= Form3.
Al estar en Form3, yo puedo hacer desde ahi:

Form2.Label1.Caption:='sss';

El problema esta que cuando ejecuta cualquier instruccion que acceda desde el Form3 al Form2 se produce el error. Los puedo usar sin problemas, y son visibles entre los dos, ya que cada uno tiene declarado la Unit del otro y viceversa.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 27-10-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, tal vez me equivoque (seguro me equivoco ), pero verifica si los dos forms está en alvailable forms o uno de los dos en Auto Create. No sé sólo estoy especulando

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #5  
Antiguo 27-10-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Yo también, por decir algo, vería de hacer lo que te propones en un proyecto nuevo, sólo para probar. Si tus razonamientos no fallan en el proyecto para pruebas, entonces debe haber algo en tu proyecto actual que está jorobando el asunto. Sé que igual es una tontería, pero, es lo único que se me ocurre ahora mismo.
Responder Con Cita
  #6  
Antiguo 27-10-2008
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Poder: 17
Neeruu Va por buen camino
Cool Problemas accediendo a otro Form

Hola a todos!!!!
Por las dudas no seria "TC" en ves de "TB"

Código Delphi [-]
//C:=TB.Create(self);
C:=TC.Create(self);
C:=Show;
C tambien tiene una Memory Tabla (RxMemorData)


Saluda Atte Neeruu!!!
__________________
Saluda Atte Neeruu!!! :)

Última edición por Neeruu fecha: 27-10-2008 a las 01:31:55.
Responder Con Cita
  #7  
Antiguo 27-10-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por Neeruu Ver Mensaje
Hola a todos!!!! Por las dudas no seria "TC" en ves de "TB"Código Delphi [-]//C:=TB.Create(self);C:=TC.Create(self);C:=Show;C tambien tiene una Memory Tabla (RxMemorData)


Saluda Atte Neeruu!!!
¡Vaya!, que mala vista tenemos, pues aparentemente ese es el problema, ¡Hostia!, nos estamos poniendo viejos joder
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #8  
Antiguo 27-10-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Neeruu Ver Mensaje
Hola a todos!!!!
Por las dudas no seria "TC" en ves de "TB"


Código Delphi [-]
//C:=TB.Create(self);
C:=TC.Create(self);
C:=Show;
C tambien tiene una Memory Tabla (RxMemorData)






Saluda Atte Neeruu!!!
No, es como tu dices, es el precio de Copy and Paste, solo que me falto cambiarlo, fue un desliz tipeando para el foro, pero en el código delphi lo tengo correctamente.

enecumene Ambos forms estan en Available, y ambos son creados en RunTime.
A crea a B, y B crea C, pero C no puede acceder a B, tira error.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #9  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola MaMu,
¿Te compila ese código?
Porque me parece raro observar algo como:

Código Delphi [-]
B := TB.Create(Self);
B := Show;

¿No sería B.Show?

Por otro lado, el único modo de que B haga uso de C y que C también lo haga con B es que uno de los dos (ya sea B o C) tenga declarados la correspondiente unidad en uses pero en implementation y el otro en interface. De otro modo te advertirá con un error que dice algo similar a "Circular Reference".

Sin conocer el error exacto no te sabríamos ayudar. Disculpa que sea un tanto pesado pero el bla, bla no ayuda en nada.
Además, tendríamos que ver apropiadamente el código que tienes.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 27-10-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola MaMu,
¿Te compila ese código?
Porque me parece raro observar algo como:


Código Delphi [-]
B := TB.Create(Self);
B := Show;





¿No sería B.Show?

Por otro lado, el único modo de que B haga uso de C y que C también lo haga con B es que uno de los dos (ya sea B o C) tenga declarados la correspondiente unidad en uses pero en implementation y el otro en interface. De otro modo te advertirá con un error que dice algo similar a "Circular Reference".

Sin conocer el error exacto no te sabríamos ayudar. Disculpa que sea un tanto pesado pero el bla, bla no ayuda en nada.
Además, tendríamos que ver apropiadamente el código que tienes.

Saludos,
Si, es B.Show, lo que pasa es que, como dije antes, a veces uno copia y pega, y se olvida de modificar.
El error, es del tipo Error read XXXxxxx in module XXXxxx y bla bla bla.
Tanto B como C, tienen declara las Units, en el uses de la implementation.
El tema es que, B Crea a C, y C, solo cambia un Label en B (en teoria, puesto a que eso tambien tira el mismo error).
Como sería la forma correcta de declararlos?

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #11  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
MaMu,
Me gustaría conocer el nombre y apellido del error, y no el bla bla

Como he dicho,
Una de las units debe tener el uses en implementation y la otra en interface. Algo como esto:

Código Delphi [-]
Unit unitX;
...

interface

uses UnitY;
...


Código Delphi [-]
Unit UnitY;
...

implementation

uses UnitX;
...

¿Se ve la diferencia?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #12  
Antiguo 27-10-2008
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
entiendo que por ahi lo haces de esa forma para no crear todos los Forms cuando se ejecuta el programa, pero probaste si te sigue tirando el error si en el source del proyecto haces que se creen los tres formularios? entonces el source te quedaria asi :

Código Delphi [-]
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);

pero tendrias que comentar el codigo donde se crean los form2 y 3
Responder Con Cita
  #13  
Antiguo 27-10-2008
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
perdon me exprese re mal, la idea es que los form2 y 3 no los crees en tiempo de ejecucion , sino que cuando se cargue el programa se creen los tres.
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
ir de un form a otro lis983 Varios 3 12-07-2008 02:42:45
Llamar otro Form. JoseFco Varios 5 22-02-2008 03:52:23
como puedo asociar un form a otro form? jasz OOP 1 28-11-2007 00:12:09
pasar datos de un form a otro form vroa74 API de Windows 15 12-10-2007 19:11:52
Imposible hacer visible un form desde otro form SMTZ .NET 13 16-01-2006 21:41:08


La franja horaria es GMT +2. Ahora son las 18:05:44.


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