[Lazarus-es] Duda sobre declaración y el alance de variables en los formularios

Ismael L. Donis Garcia ismael en citricos.co.cu
Mar Sep 3 23:44:56 CEST 2013


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

  ----- 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


    _______________________________________________
    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


------------------------------------------------------------------------------


  _______________________________________________
  Lazarus-es mailing list
  Lazarus-es en lists.lazarus.freepascal.org
  http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130903/0d687f1d/attachment-0002.html>


More information about the Lazarus-es mailing list