Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2013-09

Duda sobre declaración y el alance de variables en los formularios

11 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ismael L. Donis Garcia

Tengo una gran duda sobre la declaraci�n de variables en formulario.

Si declaro una variable de la siguiente forma:

implementation
var
  ddebe, dhaber: double;

y llamo el formulario de la siguiente forma:

  f:=form1.Create(Self);
  f.ShowModal;
  f.Free;
Y dentro del formulario le doy valores a las variables ddebe y dhaber y
cierro el formulario con self.close;

Cuando entro de nuevo al formulario se me conservan los valores de las variables ddebe y dhaber.

Ahora mi duda:

Si yo cierro el formulario porque se me mantiene el valor de las variables que yo hab�a calculado en la entrada anterior?
Este valor no deber�a ser =0 al volver a entrar de nuevo al formulario? Cual es la causa de este comportamiento?

Desde ya Gracias
========
| ISMAEL |
========
Only for the small landowners and Cubans companies Website: www.sisconge.byethost15.com
www.sisconge.hol.es

Reply by email

Maxi
to Ismael L. Donis Garcia

El d�a 3 de septiembre de 2013 16:47, Ismael L. Donis Garcia <ismael en citricos.co.cu> escribi�:

Show quoted text 41 lines
Tengo una gran duda sobre la declaraci�n de variables en formulario. Si declaro una variable de la siguiente forma: implementation var ddebe, dhaber: double; y llamo el formulario de la siguiente forma: f:=form1.Create(Self); f.ShowModal; f.Free; Y dentro del formulario le doy valores a las variables ddebe y dhaber y cierro el formulario con self.close; Cuando entro de nuevo al formulario se me conservan los valores de las variables ddebe y dhaber. Ahora mi duda: Si yo cierro el formulario porque se me mantiene el valor de las variables que yo hab�a calculado en la entrada anterior? Este valor no deber�a ser =0 al volver a entrar de nuevo al formulario? Cual es la causa de este comportamiento? Desde ya Gracias ======== | ISMAEL | ======== Only for the small landowners and Cubans companies Website: www.sisconge.byethost15.com www.sisconge.hol.es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

esta mal declarado y usado.

Deberias hacerlo asi:

TformX
.
.
.
.
Private
ddebe, dhaber: double;
end;

Si lo declaras en la implementacion es como global al archivo.

Self es el objeto actual en el momento de llamarlo, y le estas diciendo que Form1 se cree como pariente del objeto que trae Self. El destructor del objeto llamador se encargaria de destruir a Form1. yo lo uso de una forma mas segura

 with Tform1.Create(nil)
 try
   Showmodal;
 finally
  Free;
end;
o
 with Tform1.Create(nil)
 try
   Showmodal; // y en el evento oncanclose colocas:  Action := caFree;
 except
  Free;
end;
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email

Martin Gomez
to Maxi

Claro, si las declaras fuera de la clase del formulario las variables quedan como "globales" (solo para los que tengan la unit del formulario en su uses).
Si necesitas acceder a estos valores desde fuera, el consejo es que agregues propiedades en el formulario, o las pongas en la secci�n *public*, sino sigue el consejo de Maxi y mantenlas privadas. Otra alternativa ser�a pasarlas a 0 en el OnCreate.

2013/9/3 Maxi <maximiliano.duarte en gmail.com>

Show quoted text 97 lines
El d�a 3 de septiembre de 2013 16:47, Ismael L. Donis Garcia <ismael en citricos.co.cu> escribi�: > Tengo una gran duda sobre la declaraci�n de variables en formulario. > > Si declaro una variable de la siguiente forma: > > implementation > > var > ddebe, dhaber: double; > > y llamo el formulario de la siguiente forma: > > f:=form1.Create(Self); > f.ShowModal; > f.Free; > > Y dentro del formulario le doy valores a las variables ddebe y dhaber y > cierro el formulario con self.close; > > Cuando entro de nuevo al formulario se me conservan los valores de las > variables ddebe y dhaber. > > Ahora mi duda: > > Si yo cierro el formulario porque se me mantiene el valor de las variables > que yo hab�a calculado en la entrada anterior? > Este valor no deber�a ser =0 al volver a entrar de nuevo al formulario? > Cual es la causa de este comportamiento? > > Desde ya Gracias > ======== > | ISMAEL | > ======== > Only for the small landowners and Cubans companies > Website: www.sisconge.byethost15.com > www.sisconge.hol.es > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es esta mal declarado y usado. Deberias hacerlo asi: TformX . . . . Private ddebe, dhaber: double; end; Si lo declaras en la implementacion es como global al archivo. Self es el objeto actual en el momento de llamarlo, y le estas diciendo que Form1 se cree como pariente del objeto que trae Self. El destructor del objeto llamador se encargaria de destruir a Form1. yo lo uso de una forma mas segura with Tform1.Create(nil) try Showmodal; finally Free; end; o with Tform1.Create(nil) try Showmodal; // y en el evento oncanclose colocas: Action := caFree; except Free; end; -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20130903/605e9908/attachment-0001.html>

Reply by email

Ismael L. Donis Garcia
to Martin Gomez

No entiendo cuando me dices fuera del formulario.

Yo lo hago dentro del formulario en la parte superior debajo de donde dice implementaci�n.

y lo llamo desde otr formulario como dije antes. Osea diciendo desde otro formulario:

var
  f: Tform1;
begin
  f:=Tform1.Create(Self);
  f.ShowModal;
  f.Free;
end;

Probe poniendo como me dice Maxi Private y me da el siguiente error:

uflbal.pas(114,2) Fatal: Syntax error, ":" expected but "identifier BVALIDA" found

Tengo declarado lo siguiente:

implementation
uses
  udm, ufconta, ufvisual;
type
 TBranch = record
   Sum: string;
    Debe: string;
    Haber: string;
    sascta: array of string;
    sacap: array of string;
    sascap: array of string;
    saele: array of string;
    saemp: array of string;
    pdscta: array of string;
    phscta: array of string;
    pdcap: array of string;
    phcap: array of string;
    pdscap: array of string;
    phscap: array of string;
    pdele: array of string;
    phele: array of string;
    pdemp: array of string;
    phemp: array of string;
 end;
var
 private
   bvalida, blist: boolean;
   sentidad, snota, strscta, strcap, strscap, strele, stremp: string;
   iano, CtaIndex, SCtaIndex, CapIndex, SCapIndex, EleIndex, EmpIndex: integer;
   lcampos: longint;
   ddebe, dhaber, ddif, dmdebe, dmhaber, dmdif: double;
   dini: TDate;
   Hdrs: array of TBranch;
end;

El private lo puse porque tratando de hacer lo que me dijo Maxi y no funcion�. Si quito el private si funciona, pero las variables de me van del hambito que deseo.

Deseo que solo se vean dentro del formulario.

O es que hay que declararlas dentro del private de los procedimientos?

osea aqu�?

  private
    { private declarations }

Yo ah� declaro las funciones y los precedimientos privados. Por ejemplo tengo en este formulario:

  private
    { private declarations }
    procedure abortar();
    procedure actdat(icta: integer; sscta: string; scap: string; sscap: string; sele: string; semp: string; bhisto: boolean);
    procedure datosact();
    function valdbal(bhisto: boolean): boolean;

Disculpen mi desconocmiento de pascal, pero nunca antes lo hab�a mirado.

Saludos Reiterados
========
| ISMAEL |
========
Only for the small landowners and Cubans companies Website: www.sisconge.byethost15.com
www.sisconge.hol.es

Earlier message 108 lines
----- Original Message ----- From: Martin Gomez To: Spanish version of Lazarus List Sent: Tuesday, September 03, 2013 4:40 PM Subject: Re: [Lazarus-es]Duda sobre declaraci�n y el alance de variables en los formularios Claro, si las declaras fuera de la clase del formulario las variables quedan como "globales" (solo para los que tengan la unit del formulario en su uses). Si necesitas acceder a estos valores desde fuera, el consejo es que agregues propiedades en el formulario, o las pongas en la secci�n public, sino sigue el consejo de Maxi y mantenlas privadas. Otra alternativa ser�a pasarlas a 0 en el OnCreate. 2013/9/3 Maxi <maximiliano.duarte en gmail.com> El d�a 3 de septiembre de 2013 16:47, Ismael L. Donis Garcia <ismael en citricos.co.cu> escribi�: > Tengo una gran duda sobre la declaraci�n de variables en formulario. > > Si declaro una variable de la siguiente forma: > > implementation > > var > ddebe, dhaber: double; > > y llamo el formulario de la siguiente forma: > > f:=form1.Create(Self); > f.ShowModal; > f.Free; > > Y dentro del formulario le doy valores a las variables ddebe y dhaber y > cierro el formulario con self.close; > > Cuando entro de nuevo al formulario se me conservan los valores de las > variables ddebe y dhaber. > > Ahora mi duda: > > Si yo cierro el formulario porque se me mantiene el valor de las variables > que yo hab�a calculado en la entrada anterior? > Este valor no deber�a ser =0 al volver a entrar de nuevo al formulario? > Cual es la causa de este comportamiento? > > Desde ya Gracias > ======== > | ISMAEL | > ======== > Only for the small landowners and Cubans companies > Website: www.sisconge.byethost15.com > www.sisconge.hol.es > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es esta mal declarado y usado. Deberias hacerlo asi: TformX . . . . Private ddebe, dhaber: double; end; Si lo declaras en la implementacion es como global al archivo. Self es el objeto actual en el momento de llamarlo, y le estas diciendo que Form1 se cree como pariente del objeto que trae Self. El destructor del objeto llamador se encargaria de destruir a Form1. yo lo uso de una forma mas segura with Tform1.Create(nil) try Showmodal; finally Free; end; o with Tform1.Create(nil) try Showmodal; // y en el evento oncanclose colocas: Action := caFree; except Free; end; -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email

German
to Ismael L. Donis Garcia

El 03/09/2013 06:44 p.m., Ismael L. Donis Garcia escribi�:

Show quoted text 62 lines
No entiendo cuando me dices fuera del formulario. Yo lo hago dentro del formulario en la parte superior debajo de donde dice implementaci�n. y lo llamo desde otr formulario como dije antes. Osea diciendo desde otro formulario: var f: Tform1; begin f:=Tform1.Create(Self); f.ShowModal; f.Free; end; Probe poniendo como me dice Maxi Private y me da el siguiente error: uflbal.pas(114,2) Fatal: Syntax error, ":" expected but "identifier BVALIDA" found Tengo declarado lo siguiente: implementation uses udm, ufconta, ufvisual; type TBranch = record Sum: string; Debe: string; Haber: string; sascta: array of string; sacap: array of string; sascap: array of string; saele: array of string; saemp: array of string; pdscta: array of string; phscta: array of string; pdcap: array of string; phcap: array of string; pdscap: array of string; phscap: array of string; pdele: array of string; phele: array of string; pdemp: array of string; phemp: array of string; end; var private bvalida, blist: boolean; sentidad, snota, strscta, strcap, strscap, strele, stremp: string; iano, CtaIndex, SCtaIndex, CapIndex, SCapIndex, EleIndex, EmpIndex: integer; lcampos: longint; ddebe, dhaber, ddif, dmdebe, dmhaber, dmdif: double; dini: TDate; Hdrs: array of TBranch; end; El private lo puse porque tratando de hacer lo que me dijo Maxi y no funcion�. Si quito el private si funciona, pero las variables de me van del hambito que deseo. Deseo que solo se vean dentro del formulario. O es que hay que declararlas dentro del private de los procedimientos? osea aqu�? private { private declarations } Yo ah� declaro las funciones y los precedimientos privados. Por ejemplo tengo en este formulario:

Hola Ismael, a eso se referia en el mensaje anterior, en la seccion private de la clase que define tu formulario, si lo haces "suelto" en la unidad, fuera de la clasela variable seria visible por toda la unidad y solo se reiniciaria con al ejecutar el programa y no cada vez que llamas al formulario. Espero que se entienda mi comentario! Saludos!

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20130903/6b8a30c4/attachment-0001.html>

Reply by email

Maxi
to Ismael L. Donis Garcia: No entiendo cuando me dices fuera del formulario. Yo lo hago dentro del formulario en la…

El 03/09/2013 20:03, "Ismael L. Donis Garcia" <ismael en citricos.co.cu> escribi�:

No entiendo cuando me dices fuera del formulario. Yo lo hago dentro del formulario en la parte superior debajo de donde

dice implementaci�n.

y lo llamo desde otr formulario como dije antes. Osea diciendo desde otro

formulario:

Show quoted text 14 lines
var f: Tform1; begin f:=Tform1.Create(Self); f.ShowModal; f.Free; end; Probe poniendo como me dice Maxi Private y me da el siguiente error: uflbal.pas(114,2) Fatal: Syntax error, ":" expected but "identifier

BVALIDA" found

Show quoted text 36 lines
Tengo declarado lo siguiente: implementation uses udm, ufconta, ufvisual; type TBranch = record Sum: string; Debe: string; Haber: string; sascta: array of string; sacap: array of string; sascap: array of string; saele: array of string; saemp: array of string; pdscta: array of string; phscta: array of string; pdcap: array of string; phcap: array of string; pdscap: array of string; phscap: array of string; pdele: array of string; phele: array of string; pdemp: array of string; phemp: array of string; end; var private bvalida, blist: boolean; sentidad, snota, strscta, strcap, strscap, strele, stremp: string; iano, CtaIndex, SCtaIndex, CapIndex, SCapIndex, EleIndex, EmpIndex:
integer;
Show quoted text 7 lines
lcampos: longint; ddebe, dhaber, ddif, dmdebe, dmhaber, dmdif: double; dini: TDate; Hdrs: array of TBranch; end; El private lo puse porque tratando de hacer lo que me dijo Maxi y no

funcion�. Si quito el private si funciona, pero las variables de me van del hambito que deseo.

Show quoted text 11 lines
Deseo que solo se vean dentro del formulario. O es que hay que declararlas dentro del private de los procedimientos? osea aqu�? private { private declarations } Yo ah� declaro las funciones y los precedimientos privados. Por ejemplo

tengo en este formulario:

Show quoted text 5 lines
private { private declarations } procedure abortar(); procedure actdat(icta: integer; sscta: string; scap: string; sscap:
string; sele: string; semp: string; bhisto: boolean);
Show quoted text 17 lines
procedure datosact(); function valdbal(bhisto: boolean): boolean; Disculpen mi desconocmiento de pascal, pero nunca antes lo hab�a mirado. Saludos Reiterados ======== | ISMAEL | ======== Only for the small landowners and Cubans companies Website: www.sisconge.byethost15.com www.sisconge.hol.es > > ----- Original Message ----- > From: Martin Gomez > To: Spanish version of Lazarus List > Sent: Tuesday, September 03, 2013 4:40 PM > Subject: Re: [Lazarus-es]Duda sobre declaraci�n y el alance de variables

en los formularios

> > Claro, si las declaras fuera de la clase del formulario las variables

quedan como "globales" (solo para los que tengan la unit del formulario en su uses).

> Si necesitas acceder a estos valores desde fuera, el consejo es que

agregues propiedades en el formulario, o las pongas en la secci�n public, sino sigue el consejo de Maxi y mantenlas privadas.

Show quoted text 23 lines
> Otra alternativa ser�a pasarlas a 0 en el OnCreate. > > > 2013/9/3 Maxi <maximiliano.duarte en gmail.com> >> >> El d�a 3 de septiembre de 2013 16:47, Ismael L. Donis Garcia >> <ismael en citricos.co.cu> escribi�: >> > Tengo una gran duda sobre la declaraci�n de variables en formulario. >> > >> > Si declaro una variable de la siguiente forma: >> > >> > implementation >> > >> > var >> > ddebe, dhaber: double; >> > >> > y llamo el formulario de la siguiente forma: >> > >> > f:=form1.Create(Self); >> > f.ShowModal; >> > f.Free; >> > >> > Y dentro del formulario le doy valores a las variables ddebe y dhaber

y

Show quoted text 8 lines
>> > cierro el formulario con self.close; >> > >> > Cuando entro de nuevo al formulario se me conservan los valores de las >> > variables ddebe y dhaber. >> > >> > Ahora mi duda: >> > >> > Si yo cierro el formulario porque se me mantiene el valor de las

variables

>> > que yo hab�a calculado en la entrada anterior? >> > Este valor no deber�a ser =0 al volver a entrar de nuevo al

formulario?

Show quoted text 58 lines
>> > Cual es la causa de este comportamiento? >> > >> > Desde ya Gracias >> > ======== >> > | ISMAEL | >> > ======== >> > Only for the small landowners and Cubans companies >> > Website: www.sisconge.byethost15.com >> > www.sisconge.hol.es >> > >> > >> > _______________________________________________ >> > Lazarus-es mailing list >> > Lazarus-es en lists.lazarus.freepascal.org >> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es >> >> >> esta mal declarado y usado. >> >> Deberias hacerlo asi: >> >> TformX >> . >> . >> . >> . >> Private >> ddebe, dhaber: double; >> end; >> >> Si lo declaras en la implementacion es como global al archivo. >> >> Self es el objeto actual en el momento de llamarlo, y le estas >> diciendo que Form1 se cree como pariente del objeto que trae Self. El >> destructor del objeto llamador se encargaria de destruir a Form1. >> yo lo uso de una forma mas segura >> >> with Tform1.Create(nil) >> try >> Showmodal; >> finally >> Free; >> end; >> >> o >> with Tform1.Create(nil) >> try >> Showmodal; // y en el evento oncanclose colocas: Action := caFree; >> except >> Free; >> end; >> >> >> -- >> El que pregunta aprende, y el que contesta aprende a responder. >> >> No a la obsolecencia programada: >>

http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml

Show quoted text 14 lines
>> >> Linux User #495070 >> http://domonetic.com/blog >> >> _______________________________________________ >> Lazarus-es mailing list >> Lazarus-es en lists.lazarus.freepascal.org >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > > > -- > Try not to become a man of success but rather to become a man of value.

Albert Einstein

Show quoted text 14 lines
> > ________________________________ > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Ismael tu clase tform tiene parte privada y p�blica, no hace falta poner var, el var es s�lo para el interior del procedimiento.

Para accede de fuera s�lo lo puedes hacer si esta en el public. Form1.mivariablepublica
Todo lo que esta en private no hace falta self.variable com en visual basic. S�lo la variable es visible a todos loa m�todos de la clase ------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20130903/98e4cb6b/attachment.html>

Reply by email

Ismael L. Donis Garcia
to Maxi
----- Original Message ----- From: Maxi

To: Spanish version of Lazarus List

Show quoted text 10 lines
Sent: Tuesday, September 03, 2013 8:24 PM Subject: Re: [Lazarus-es]Duda sobre declaraci�n y el alance de variables en los formularios Ismael tu clase tform tiene parte privada y p�blica, no hace falta poner var, el var es s�lo para el interior del procedimiento. Para accede de fuera s�lo lo puedes hacer si esta en el public. Form1.mivariablepublica Todo lo que esta en private no hace falta self.variable com en visual basic. S�lo la variable es visible a todos loa m�todos de la clase

Perfecto son conceptos que todav�a tengo que ir ganando en Lzarus

1 Mill�n de Gracias para ti y para German por la aclaraci�n. ========
| ISMAEL |
========
PD: Ahora voy arreglar todo lo que hab�a hecho antes.

Reply by email

Martin Gomez
to Ismael L. Donis Garcia: No entiendo cuando me dices fuera del formulario. Yo lo hago dentro del formulario en la…

2013/9/3 Ismael L. Donis Garcia <ismael en citricos.co.cu>

Show quoted text 5 lines
No entiendo cuando me dices fuera del formulario. Yo lo hago dentro del formulario en la parte superior debajo de donde dice implementaci�n.

le llamamos "??formulario" a la clase u objeto que representa el formulario. En tu caso, la declaraci�n "TForm1 = class(TForm)" y todo lo que sigue debajo hasta el "end;"
Tu lo declaras dentro de la unit, no del formulario, por eso es que son variables que no perternecen al formulario sino al contexto (scope en la documentacion en ingl�s) de la unit donde el formulario est� definido.

Show quoted text 18 lines
O es que hay que declararlas dentro del private de los procedimientos? osea aqu�? private { private declarations } Yo ah� declaro las funciones y los precedimientos privados. Por ejemplo tengo en este formulario: private { private declarations } procedure abortar(); procedure actdat(icta: integer; sscta: string; scap: string; sscap: string; sele: string; semp: string; bhisto: boolean); procedure datosact(); function valdbal(bhisto: boolean): boolean;

?Exactamente ah� debes poner la variables privadas del formulario.

??

Disculpen mi desconocmiento de pascal, pero nunca antes lo hab�a mirado.

?Estamos para ayudar.
Te recomiendo la lectura de "Pascal Esencial" de ?Marco Cantu (autor de la serie "Mastering Delphi"), es un libro gratuito, lo consigues aqui: http://www.marcocantu.com/epascal/Spanish/

Suerte con eso.

Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20130904/ef70bd08/attachment.html>

Reply by email

Maxi
to Ismael L. Donis Garcia: To: Spanish version of Lazarus List Perfecto son conceptos que todav�a tengo que ir…

El d�a 4 de septiembre de 2013 09:17, Ismael L. Donis Garcia <ismael en citricos.co.cu> escribi�:

Show quoted text 31 lines
> ----- Original Message ----- From: Maxi To: Spanish version of Lazarus List > > Sent: Tuesday, September 03, 2013 8:24 PM > > Subject: Re: [Lazarus-es]Duda sobre declaraci�n y el alance de variables > en los formularios > Ismael tu clase tform tiene parte privada y p�blica, no hace falta poner > var, el var es s�lo para el interior del procedimiento. > Para accede de fuera s�lo lo puedes hacer si esta en el public. > Form1.mivariablepublica > Todo lo que esta en private no hace falta self.variable com en visual > basic. S�lo la variable es visible a todos loa m�todos de la clase Perfecto son conceptos que todav�a tengo que ir ganando en Lzarus 1 Mill�n de Gracias para ti y para German por la aclaraci�n. ======== | ISMAEL | ======== PD: Ahora voy arreglar todo lo que hab�a hecho antes. _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

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;
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email

Ismael L. Donis Garcia
to Maxi
Show quoted text 7 lines
----- 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
Show quoted text 35 lines
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.
Show quoted text 12 lines
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�.

Reply by email

Martin Gomez
to Ismael L. Donis Garcia

2013/9/4 Ismael L. Donis Garcia <ismael en citricos.co.cu>

PD: Mart�n te garantizo que voy a encargar el libro "Pascal Esencial" y que me lo estudiar�.

Es gratuito, si quieres te bajo las paginas y te las adjunto a un email (en caso que no puedas navegar)?

Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20130904/cca27707/attachment.html>

Reply by email