[Lazarus-es] Duda sobre declaración y el alance de variables en los formularios
Ismael L. Donis Garcia
ismael en citricos.co.cu
Mie Sep 4 16:22:52 CEST 2013
>----- Original Message -----
>From: "Maxi" <maximiliano.duarte en gmail.com>
>To: "Spanish version of Lazarus List"
><lazarus-es en lists.lazarus.freepascal.org>
>Sent: Wednesday, September 04, 2013 9:58 AM
>Subject: Re: [Lazarus-es]Duda sobre declaración y el alance de variables en
>los formularios
>Para aclarar un poco mas
>Lo declarado entre interfaz e implementacion es visible por cualquier
>unidad en la que este decalrada en el uses, osea global.
>Lo declarado debajo de implementacion es global ALA UNIDAD (esee solo
>archivo)
>Lo declarado en private, variables o metodos es PRIVADO de la clase
>que lo declara, puede ser usado por si mismo.
>Lo declarado en public, variables o metodos es PUBLICO para cualquiera
>que declare un objeto de ese tipo y lo acceda como
>objeto.Variable/metodo, y logicamente puede ser usado por si mismo.
>Lo declarado en published es lo que puede ver el inspector de objetos
>y algun metodo de acceso a metodos por nombre.
>Lo declarado en protected está protegido y usado por si mismo, y solo
>puede ser heredado por otros objetos descendientes para ser
>publicados.
>Cuando usas variables publicas lo mejor es usar propiedades, lo que te
>permite control de lectura o escritura y metodos de validacion
>ejemplo
>...
>private
> mivariable:integer;
> function GetValorVariable:Integer;
> procedure SetValorVariable(valor:integer);
>...
>public
> property PublicarVariable.integer Read mivariable Write mivariable;
>// esta forma publicas algo privado como lectura y escritura
> property PublicarVariable.integer Read mivariable; // esta forma
>publicas algo privado como lectura
> property PublicarVariable.integer Read Write mivariable; // esta
>forma publicas algo privado como escritura
> property PublicarVariable.integer Read GetValorVariable Write
>SetValorVariable; // esta forma publicas algo privado como lectura y
>escritura usando metodos.
>implementation
>function Tform1.GetValorVariable:Integer;
>Begin
> result mivariable,
>end;
>procedure Tform1.SetValorVariable(valor:integer);
>Begin
> //cualquier rutina de validacion
>...
> mivariable:= Valor
>end;
Yo lo que no conocia era el ambito. Los conceptos los tengo claro. Vengo
programando en otros lenguajes hace mucho tiempo.
De hecho no uso variables publicas, como tu bien dices "y de hecho conozco
que es una buena práctica" solo uso propiedades y funciones publicas. Las
cuales las tengo en el DataModule que es el que me carga el programa cuando
inicia. Por ejemplo tengo la siguiente:
public
{ public declarations }
property Usuario: string read GetUsuario write SetUsuario;
Lo que me pasa que aun pienso como si estuviera en otros lenguajes y ahí es
donde cometo las pifias (errores).
Gracias Reiteradas a todos los que me han ayudado.
========
| ISMAEL |
========
PD: Martín te garantizo que voy a encargar el libro "Pascal Esencial" y que
me lo estudiaré.
More information about the Lazarus-es
mailing list