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 21-04-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Poder: 21
senpiterno Va por buen camino
Utilizar propiedad dentro de un objeto

Hola amigos

Como he dicho en algunas preguntas que he realizado en este foro con anterioridad, soy un programador de VB que intenta aprender Delphi, para lo cual estoy migrando algunas aplicaciones que he construido a Delphi. Me he encontrado con bastantes diferencias entre un lenguaje y otro por lo cual cuando tengo una duda la intento homologar con mi experiencia en VB. He tenido bastentes problemas en comprender la forma en que Delphi trabaja para la creacion de objetos, me gustaria saber como referencio el valor de la propiedad de un objeto dentro de su misma definicion, me explico, si creo un objeto cualquiera y a este le agrego una propiedad de lectura y escritura, como referencio el valor que tiene dicha propiedad en un momento dado dentro de un procedimiento o funcion que forma parte de los procesos realizados en el mismo objeto. he intentado esto: Objeto.Propiedad para referenciar el valor, pero me dice que el metodo no es reconocido, siendo que la propiedad esta declarada.


Cualquier ayuda se agradece de antemano.
Responder Con Cita
  #2  
Antiguo 21-04-2004
gendelphi gendelphi is offline
Miembro
 
Registrado: jul 2003
Ubicación: Tlaxcala Mexico
Posts: 73
Poder: 21
gendelphi Va por buen camino
Para referenciar una propiedad de una clase dentro del mismo ámbito de la clase, es simplemente con el nombre de la propiedad/metodo, o bien usando el operador explicito Self.

Por ejemplo:

[code]
procedure TMiClase.UnMetodo;
begin
propiedad1:=0;
propiedad2:=0;
end;
[code]

o bien

[code]
procedure TMiClase.UnMetodo;
begin
Self.propiedad1:=0;
Self.propiedad2:=0;
end;
[code]
Responder Con Cita
  #3  
Antiguo 21-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cuando en VB creas una clase, si defines una propiedad normalmente su valor lo guardas en una variable o campo que nombra con el prefijo "mVar", por ejemplo este código VB:
Código:
Private mvarPropiedad As Variant 'Variable o Campo donde se guardará el valor de la propiedad

Public Sub Initialize()
  mvarPropiedad = "Valor por Defecto"
End Sub

Public Sub Metodo()
  If mvarPropiedad= "XX" Then
    ...  
  End If
End Sub

Public Property Let Propiedad(ByVal vData As Variant)
  If mvarPropiedad <> vData Then
    mvarPropiedad = vData
  End If
End Property

Public Property Get Propiedad() As Variant
   Propiedad = mvarPropiedad
End Property
Sería muy similar a este código Delphi
Código:
interface

Type
  TClase = class(TObject) { Primer concepto faltante de Visual: Herencia TClase hereda de TObject }
  private
    FPropiedad: string;
    function GetPropiedad: string;
    procedure SetPropiedad(const Value: string); { Variable o Campo donde se guardará el valor de la propiedad }
  public
    procedure Metodo;
  published
    property Propiedad: string read GetPropiedad write SetPropiedad;
  end;

implementation

{ TClase }

function TClase.GetPropiedad: string;
begin
  Result := FPropiedad;
end;

procedure TClase.Metodo;
begin
  if FPropiedad = 'XX' Then
    ...
end;

procedure TClase.SetPropiedad(const Value: string);
begin
  if FPropiedad <> Value then
    FPropiedad = Value;
end;
Vale aclarar un par de cosas, en este ejemplo tanto en VB como en Delphi los métodos de lectura y escritura de la propiedad no estan haciendo nada extra, así que se podría evitar el uso de esos, en VB definiendo una Variable Pública en lugar de una propiedad, en Delphi se podría definir una variable pública o una propiedad que acceda directamente a los campos:
Código:
property Propiedad: string read FPropiedad write FPropiedad;
Si estos métodos tuvieran lógica dentro, habría que evaluar en el código donde se llama al campo si llamar a este o a la propiedad para que ejecute esta lógica.

Recuerda que Delphi es un lenguaje orientado a objetos y que case todo es un objeto, este mismo tratamiento podrás utilizarlo para crear tus forms, componentes, tipos de datos...

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 21-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola gendelphi. Tu intento de poner las etiquetas code ha sido bueno... pero te faltó la barra para cerrarlas:

[ code] [ /code] (sin el espacio).

Hasta luego y adelante
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 21-04-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Poder: 21
senpiterno Va por buen camino
Gracias a todos, realmente han sido un verdadera ayuda a mi trabajo.
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


La franja horaria es GMT +2. Ahora son las 16:30:15.


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