Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Manejo de vaiables (https://www.clubdelphi.com/foros/showthread.php?t=18983)

Luli 01-03-2005 03:05:08

Manejo de vaiables
 
Hola, nuevamente tengo problemas y acudo a solicitar su ayuda, lo que pasa es que en el programa en el que estoy trabajando, tengo mi formulario principal y al oprimir un botón, se llama a otro formulario, hasta ahi trabajé bien pero ahora al oprimir otro botón distinto del formulario principal, debe llamarse otro formulario y ya hay un problema porque ya no funciona correctamente el programa, supongo que son las variables porque las declaro en cada unit, por ejemplo uso una tabla, variables y una lista, esas las declaro en cadda unit porque de lo contrario el programa no compila, supongo que las debo declarar en el formulario principal y con eso debe ser suficiente pero no lo hago bien porque el programa no corre, ¿me podrian ayudar con algun ejemplo? muchas gracias

marcoszorrilla 01-03-2005 07:32:52

No queda muy claro cual es el problema, es decir que tipo de error es el que te da, si vas a utilizar variables de un formulario en otro que va a ser llamado por éste, es suficiente con que sean declaradas en la parte pública y se haga un "Use" del formulario en donde se encuentran, si por el contrario quieres utilizarlas en toda la aplicación, a modo de variables globales, es mejor crear una Unidad exclusivamente para guardar dichas variables y hacer "Use" de ella en toda la aplicación para poder acceder a estas variables.

Un Saludo.

Luli 02-03-2005 05:17:53

Declaracion global
 
hola, gracias por responder, cuando declaro las variables, la lista y el arreglo en la unit del formulario principal y no en las unit de los formularios secundarios, que es donde se utilizan, al compilar me manda un error porque dice que las variables no estan declaradas en las unit donde se usan...

Y se me ocurrio eliminarlas de las unit de los formularios secundarios porque aunque es ahi donde se usan principalmente, creo que el programa no funciona correctamente porque tal vez las variables se inicializan más de una vez o no sé, algo pasa, por eso decidi declararlas una sola vez, de manera global, pero no me funcionó, seguramente no lo hice bien.

Intentaré lo de la unit donde solo se declaren variables, de cualquier manera si me pudiera enviar algun ejemplo de codigo que me sea de utilidad se lo agradecería mucho...

marcoszorrilla 02-03-2005 07:13:09

Código Delphi [-]
 unit Global;
 
 interface
 uses
 SysUtils,DmAnievas,Registry,Windows,Printers,Dialogs;
 Var
 AskBor:Boolean;
 nIntentos:Integer;
 nClave:Integer;
 Estado:Integer;
 nOpcion:Integer;
 
 
 Anno,Mes,Dia:Word;
 Pueblo:String;
 cFiltro:String;
 listado:Integer;
 cUsuario:String;
 nSuma:Integer;
 
 nRepara:Double; //Número de reparación actual
 Function Codifica(s:String):String;
 function RoundEuros(Const X: Double): Double;
 function GrupoTrabajo : string;
 Function NombreUsuario():String;
 Function GetImpresora(Impre:String):Integer;
 
 Procedure BorraLck();
 
 Const
 clinDown = Chr(10)+Chr(13);
 
 implementation
 
 {Aqui iran todos los procedimientos y
 funciones declarados}
 
 
 
 function RoundEuros(Const X: Double): Double;
 var
 r:Int64;  //resto
 X2:Int64; //número
 x1:double;  //resultado
 begin
 x2:=trunc((abs(x)*1000)+0.5); //Tomo los 3 primeros decimales.
 
 r:=(x2 mod 10);//Compruebo si el 3 decimal es >=5
 x2:=trunc(x2/10);//desprecio el tercer decimal
 
         if r >= 5  then  //Si el 3 decimal era >= 5 sumo 1 al número
                 x2:=x2+1;
 
 x1:=x2/100; //Construyo el número con los 2 decimales
 
         if x < 0 then
                 result:=0 - x1
         else
                 result:=x1;
 
 end;
 
 
 
 end.

En todos los forms en que vayas a utilizar estas variables y funciones tienes que hacer un "Use" de esta unidad.

Un Saludo.

Yaco 02-03-2005 10:12:28

Si necesitas que los valores de esas variables sean "visibles" desde varios forms o/y units, la mejor opcion es crear una unidad donde declares dichas variables, en la zona interface y luego añadir esta unidad en la "uses" de cada form en el que vaya a usarlas.

Si por el contrario, los valoes solo van a ser usados dentro de cada form y no necesitas que pasen a otros, basta con declararlas en la zona private de cada uno.

La tersera posibilidad es que deses acceder puntualmente al valor de una variable que esta en otro form abierto. Para ello, dicha variable debe estar declarada en la zona public del form y añadir este este al "uses" del form desde quieras acceder. Luego, el modo de hacer referencia a esta variable debera ser form1.variable.

Espero haberme explicado.
Un saludo
Yaco


La franja horaria es GMT +2. Ahora son las 12:48:50.

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