![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
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. |
|
#2
|
|||
|
|||
|
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] |
|
#3
|
||||
|
||||
|
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
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;
Código:
property Propiedad: string read FPropiedad write FPropiedad; 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.
|
|
#4
|
||||
|
||||
|
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 |
|
#5
|
|||
|
|||
|
Gracias a todos, realmente han sido un verdadera ayuda a mi trabajo.
|
![]() |
|
|
|