Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2006
[David] David is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Málaga
Posts: 417
Poder: 16
David Va por buen camino
Smile Estoy atascado en el siguiente código

Hola

Como no me sale el código que pondré acontinuación , lo que he hecho es hacer una aplicación simple y simplificarlo , pero me sigue dando error .

Tengo 2 formularios del tipo MDIChild (Form2) . Habró el primer formulario MDIChild , que tiene un botón para crear el segundo formulario MDIChild (Form3).

En el Form3 , hay un procedimiento ,de nombre Ver , declarado en public. En este procedimiento , en este código da error : label1.Visible := True; .

llamo a este procedimiento , en el Form2 , así :

Código Delphi [-]
TForm3.Create(application); // aquí no hay problemas

with Form3 do // recuerdo este código esta en el Form2
Ver;

pues bien , cuando depuro , y pongo el punto de ruptura en el Form3 , en el procedimiento Ver , cuando llego a label1.Visible := true ; (en diseño he pueso label1 visible false) , Me sale el siguiente error :

Project ejemplo.exe raised exception class EAccessViolation with message 'Access violation at address 00450712 in module 'ejemplo.exe'.Read of address 00000002D8 . Process stopped .Use Stept or Run to continue.

El caso es que primero pensaba que habria un error por otro lado , por eso he hecho una sencilla aplicación , para ver si pasaba y pasa , da error , así que he concluido que desde otro form , no puedes llamar a un procedimiento en el que haya un campo boolean , pero claro , yo necesito poner los labels , visibles , cuando genero el Form3 , desde el Form2.

Un saludo
Responder Con Cita
  #2  
Antiguo 01-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.627
Poder: 27
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Las "violaciones de acceso" tienen que ver con tratar de acceder a la instancia de un objeto que, o bien no ha sido creado aún, o bien ya fue destruido. Ahora bien, ya que dices que has hecho una aplicación "de prueba" (estupenda idea, en mi opinión), ¿porqué no adjuntas en este mismo Hilo, en otro mensaje, el código fuente de la misma?

Es sencillo adjuntar archivos a un mensaje. Fíjate en el formulario que te sirve para publicar y/o editar tus mensajes: abajo de los botones "Enviar" o "Editar" encontrarás unas "Opciones adicionales". Ahí encontrarás un botón de nombre "Manegar archivos adjuntos". A partir de ahí no creo que tengas problemas.

Únicamente ten en cuenta que no puedes adjuntar archivos "muy grandes", así que, sitúa en una carpeta los archivos "pas" y "dpr" de la aplicación de prueba y comprímelos luego en formato ZIP, por ejemplo. Generalmente algo así ocupará 2 ó 3 KB y no te tendrás problemas en adjuntar el archivo de marras. ¿Qué te parece?
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #3  
Antiguo 01-10-2006
[David] David is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Málaga
Posts: 417
Poder: 16
David Va por buen camino
Adjunto el ejemplo fácil que he realizado , que da el mismo error , la aplicación principal no la pongo claro , por que ocupa varios megas . Pero se ve claro , donde falla la cosa .

Formulario principal , voy al formulario 1 , y de ahí quiero ir al otro formulario , y que el label sea visible .
Archivos Adjuntos
Tipo de Archivo: zip ejemplo.zip (4,6 KB, 22 visitas)
Responder Con Cita
  #4  
Antiguo 01-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.627
Poder: 27
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Pues el tema está en que tratas de acceder a un objeto (el Label) que se encuentra en el "Formulario 3" y, este último, no está creado, o, por mejor decir, no está correctamente "referenciado"... ¿Cómo que no está creado si tú te encargas de hacer lo siguiente?

Código Delphi [-]
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
    TForm3.Create(Application);
    with Form3 do
        Verlabel;
   {
     Si lo pongo así tambíen da error
    with (ActiveMDIChild as TForm3) do
     Verlabel;  }
end;

Bueno. Fíjate que estás creando una instancia de "TForm3", pero, ¿a quién estás "asignando" dicha instancia? ¿Qué variable tendrá la referencia a dicha instancia? Para que fuera "Form3" (la variable) tendrías que hacer algo así, sencillamente:

Código Delphi [-]
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
    Form3 := TForm3.Create(Application);
    with Form3 do
        Verlabel;
   {
     Si lo pongo así tambíen da error
    with (ActiveMDIChild as TForm3) do
     Verlabel;  }
end;

Y ya está... ya no tendrás problemas en hacer lo que precisas, como podrás comprobar tú mismo.
__________________
David Esperalta
www.davidesperalta.com

Última edición por dec fecha: 01-10-2006 a las 10:34:26.
Responder Con Cita
  #5  
Antiguo 01-10-2006
[David] David is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Málaga
Posts: 417
Poder: 16
David Va por buen camino
Gracias, que fácil es la solución .

Ayer estuve horas , probando de todo , y esta mañana , daba vueltas a la cabeza , y me he levantado bastante temprano , al final la cosa era más fácil de lo que parece .

Un saludo
Responder Con Cita
Respuesta


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
siguiente registro (mysql) Cosgaya PHP 2 11-07-2006 00:59:40
sabel el siguiente tab? raudelink Varios 2 26-04-2005 01:40:28
Buscar siguiente en Lista con SQL rogeriobeltran Firebird e Interbase 6 23-07-2004 17:02:41
encontrar el siguiente en ado jzginez Conexión con bases de datos 1 21-05-2004 11:42:08
como consulto lo siguiente noe SQL 1 12-02-2004 03:32:42


La franja horaria es GMT +2. Ahora son las 10:00:41.


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