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 19-03-2010
r1d2m3 r1d2m3 is offline
Miembro
 
Registrado: nov 2009
Posts: 88
Poder: 15
r1d2m3 Va por buen camino
sobe declaración de variables de objeto

Hola amigos, estoy en un problema y necesito de vuestra colaboración y conocimiento. Tengo una aplicación del tipo mdi y a partir de un formulario, lanzo otro en el cual asigno una serie de valores a unas variables mediante unas propiedades, el problema que tengo es que una vez que ya lancé el segundo formulario, al cual ya le pasé determinado valor mediante una propiedad, al volver a llamar de nuevo al segundo formulario desde otro form, el valor que tenía en mi variable del primer objeto creado, se vuelve a cero, y necesito que se mantenga este valor mientras esté activo mi segundo form. a continuación, pego unos extractos de código a los efectos de explicar mejor el problema:

Código Delphi [-]
//segundo form o form convocado
...
  published
    property IDCarpeta:Integer write SetIDCarpe;
    property IDGestor:Integer write SetIDGestor;

//este es mi segundo form, el que será convocado desde otros forms
//mediante estas propiedades, asigno en las siguientes variables, los valores
//que le estoy pasando desde el primer form.

implementation

var
  varIdCarpeta:Integer;
  varIdGestor:Integer;

Código Delphi [-]
//primer form o form que llama al segundo form
procedure TfrmCarpetas.btnEditorClick(Sender: TObject);
var
  vform : TformEdTextos;

begin
    vform:=TformEdTextos.Create(Self);
    vform.IDCarpeta:=20;
    vform.Show;
end;

//este es el código que uso para lanzar el segundo form, observar la línea //vform.idcarpeta:=20, aquí le paso mediante una propiedad, un valor al
//segundo form que necesito se mantenga mientras esté activo dicho form.

En otros lenguajes, se pueden definir cuales son las variables del objeto, de manera tal que al crear varios objetos, los mismos mantienen sus valores de variables, creo que por aquí pasa mi problema y no se como se hace esto con delphi. ¿existe esta forma de asignar variables en delphi?, es decir que solo sean para los objetos creados a partir de una clase?.

Espero me puedan ayudar, saludos y gracias por la lectura.
Responder Con Cita
  #2  
Antiguo 19-03-2010
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Creo que te refieres a que cada objeto creado tenga su propia instancia de variables, es decir, encapsular dichas variables dentro del objeto.

La declaración de un objeto va desde "type Objeto = class(TObject)" hasta "end;", contando con varias palabras reservadas "Private, Protected, Public y Published" que determinan bloques en los cuales se encapsulan variables, procedimientos o funciones.

Para ser más concreto en la explicación te expongo un ejemplo partiendo del código que tú has proporcionado y de deducciones mías:

Código Delphi [-]
 Type TObjeto = Class();
   Private
     Procedure SetIDCarpe(Valor: Integer);
     Procedure SetIDGestor(Valor: Integer);
     {private declarations}
   Protected
     {protected declarations}
   Public
     {public declarations}
   Published
    property IDCarpeta:Integer write SetIDCarpe;
    property IDGestor:Integer write SetIDGestor;
     {published declarations}
 end;

Supuse que SetIDCarpe y SetIDGestor hacen referencia a dos procedimientos que se encargan de almacenar el valor asignado a IDCarpeta e IDGestor respectivamente. El error tuyo viene a que (supongo) estás asignando dichos valores a estas variables globales que declaras en la Unidad:
Código Delphi [-]
var
  varIdCarpeta:Integer;
  varIdGestor:Integer;

Son variables globales (de una sola instancia), por lo que si creas dos formularios y manipulas una propiedad en uno, el valor de esta variable no se guardará para cada clase (excepto que sólo crees un formulario) y será el mismo para todas las clases creadas.

La solución está en incorporar dichas variables dentro de uno de los bloques que designan las palabras reservadas del objeto, por ejemplo:

Código Delphi [-]
...
    Public
      varIdCarpeta:Integer;
      varIdGestor:Integer;
     {public declarations}
...

De esta forma, cada vez que crees un objeto, se crearán instancias de dichas variables asociadas al objeto sin interferirse entre las distintas instancias de los formularios.

Espero que lo hayas entendido, es un poco complejo de explicar así de golpe si desconoces completamente su funcionamiento.

Un saludo.
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita
  #3  
Antiguo 20-03-2010
r1d2m3 r1d2m3 is offline
Miembro
 
Registrado: nov 2009
Posts: 88
Poder: 15
r1d2m3 Va por buen camino
Gracias DarkMan, era justo la aclaración que necesitaba.
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
Declaracion de Variables berfer Firebird e Interbase 10 13-10-2011 21:12:20
Como obtener las variables de un objeto TEO127 OOP 17 08-06-2007 12:43:05
Crear variables de tipo Objeto!! rodrigo19 Varios 2 26-05-2007 02:40:14
Tengo un problema de un Error en la declaración de variables Robert01 Varios 4 03-03-2007 05:45:50
declaracion de variables... azaagh Varios 4 08-06-2004 15:44:45


La franja horaria es GMT +2. Ahora son las 20:25:49.


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