PDA

Ver la Versión Completa : variable super general


mjjj
11-05-2007, 00:36:27
hola amigos....

ocurre lo siguiente...

tengo un programa con varias form (15)... buscando en otros hilos averigue que existen varibles generales, pero que solo son reconocidas dentro de un mismo form... por ejemplo variable X, definida para el form 1... lo que quiero hacer es que este disponible esa misma varibles, con el mismo valor, pero en otra form... form 2, form 3, etc

¿Existen variables super generales, que atravieses en concepto del FORM??

muchas gracias

Saludos

gluglu
11-05-2007, 00:49:08
Basta con que la declares pública en cualquiera de los forms, aunque lo más lógico sería que la declararas pública en el form principal.

Y después puedes acceder en cualquiera de los forms a esa variable simplemente poniendo el nombre del form delante en la cual se declaró.

Por ejemplo MainForm.NombreVariable := Loquesea, o Loquesea := MainForm.NombreVariable

No se te debe olvidar incluir el form principal (o del cual quieres compartir variables públicas), en la cláusula Uses del form desde el cual vayas a acceder a esas variables públicas.

Saludos, ;)

BuenaOnda
11-05-2007, 00:52:03
Hola..

Mira lo que yo hago es declarar variables,funciones y procedimientos en un TDataModule, y despues para utilizar estas variables, funciones y procedimientos en todos los formularios que se necesite, solo incluyo la Unit del TModulo en el formualrio que deseo utilizar las variables, funciones y procedimientos. Para esto debes ir al menu Archivo(File)/Uses Unit... Es la forma que conosco, espero que te sirva..:D

FGarcia
11-05-2007, 01:07:16
Un ejemplo:


//Este es el esqueleto que genera delphi
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
//AQUI Declara tu variable global del tipo que necesites. p.e.
varGlobal: integer;

implementation

{$R *.dfm}

end.

Espero te sirva.

Delphius
11-05-2007, 06:44:59
Solo quiero recalcar que tampoco es necesario contar cun un form para mantener variables públicas y globales. Basta con indicar declarar una unit con un nombre descriptivo (por falta de imaginación: UGlobales). Entonces cada unit (no nocesariamente correspondiente a algun form) que deba tener acceso a estas variables debe tener incorporado dentro de uses el nombre de UGlobales.

Algo como:

unit UGlobales;

interface

uses
// los que hagan falta

type
// los tipos de datos que sean necesarios...

var
// variables públicas
variable1: tipo_dato;
variable2: tipo_dato;

implementation


end.

La idea del datamodule es buena, si se emplean base de datos...
Si no se requieren de BD, es un desperdicio emplear el Datamodule
Allí, creo, que sería mejor considerar una unidad UGlobales.

Saludos,

Héctor Randolph
11-05-2007, 07:02:28
Estoy totalmente de acuerdo con Delphius. De hecho, así están implementadas las famosas variables globales Application y Screen dentro de la unit Forms. Por esa razón, estas variables están siempre disponibles en todos los formularios de nuestros programa.


Unit Forms;

{ Global objects }

var
Application: TApplication;
Screen: TScreen;


Intenta quitar del uses de tu proyecto (*.dpr) la llamada a la unit Forms y verás el resultado ;)


program Project1;

uses
//Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.


Saludos