SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: betitono1 en Martes 28 de Septiembre de 2004, 22:37

Título: Variable Entre Formularios
Publicado por: betitono1 en Martes 28 de Septiembre de 2004, 22:37
Hola q tal alguien sabe como hacerle para declarar una variable en el formulario principal  y q se pueda cambiar su valor en los demas formularios o en uno sólo, algo asi como q sea publica la variable, he probado varias declaraciones pero no me han resultado.


Saludos.
Título: Re: Variable Entre Formularios
Publicado por: lordford en Martes 28 de Septiembre de 2004, 23:45
Hola:

no deberias tener problemas con eso, intenta lo sqte:

Adiciona un atributo publico a tu clase Form1, digamos que es la principal, puede ser cualquier tipo de variable:
Código: Text
  1. int number;
  2.  
y luego crea un nuevo formulario, este se llamara por defecto Form2, y entre sus ficheros de cabecera, haz:
Código: Text
  1. #include "Unit1.h" //Seria el nombre de la Unit principal
  2.  
Imagina que tienes en el formulario 2 a estos componentes: una caja de texto con label[LabelEdit1] y un boton[Button1], entonces en el OnClick() del boton, puedes hacer esto:
Código: Text
  1. //....
  2. try
  3. {
  4.  Form1->number = Edit1->Text.ToInt();
  5. }
  6. catch(...)
  7. {
  8.  ShowMessage("Ingresa un entero valido")
  9.  Edit1->Clear();
  10.  Edit1->SetFocus();
  11. }
  12.  

Eso debe ser todo, al menos a mi no me da problemas, y aclaro qu uso C++ Builder 6 con Windows XP,

Espero que te sirva.

Salu2,

 B)  :lol:  :hola:  :smartass:

LordFord
Título: Re: Variable Entre Formularios
Publicado por: betitono1 en Miércoles 29 de Septiembre de 2004, 01:22
gracias por la respuesta pero lonecesito para Builder 5.0 ya probe el código y no me funciona, me dice q es una variable desconocida,

Saludos
Título: Re: Variable Entre Formularios
Publicado por: AURED en Viernes 1 de Octubre de 2004, 14:34
¿No funciona eso en el Builder 5?  :o
Para que te funcione debes declararla como miembro público de la clase Form1, o sea dentro de la declaración de la clase q hay en el Unit1.h, lo cual supongo que ya habrás hecho ¿no?

Prueba si no a declararla fuera de la clase como una variable global con la cláusula extern.  :huh:

¿Tantas diferencias hay entre la versión 5 y la 6? yo solo he manejado esta última...
Título: Re: Variable Entre Formularios
Publicado por: Joss en Martes 26 de Octubre de 2004, 17:02
Lo que dice AURED funciona, en la 5.0 que es la que tengo.
Sospecho que te has olvidado algo, como pueda ser el #include "unit1.h"...
Saludos.
Título: Re: Variable Entre Formularios
Publicado por: NOVA_BUILDER en Miércoles 1 de Diciembre de 2004, 15:46
ESTOY DE ACUERDO,

MIRA REALIZA PASO A PASO LO SIG..

///FORM1

PUBLIC :
INT variable_global;

////FORM2


//TAL VEZ AL PRESIONAR UN BOTON INCREMENTAS LA VARIABLE DE LA FORMA1 (variable_global

//ENTONCES....


FORM1->variable_globa+=1; //AQUI LA MODIFICAS COMO QUIERAS, PERO LA RESPUESTA ESTA EN ESTAS DOS PARTES.

////////////////////////

FORM->"variable_global"  //ASI ACCESAS A LA VARIABLE DE LA FORMA, PERO TAMBIEN DEBES DECLARAR EN LA FORM2 EL FORM1

SUPONGAMOS QUE HAS GUARDADO EL FORM1 COMO INICIO
Y EL FORM2 COMO SEGUNDA, ENTONCES DEBES HACER LO SIGUIENTE


EN EL CODIGO DEL FORM2 (SEGUNDA), EXISTE "SEGUNDA.H"
DEBAJO DE ESTA DECLARA "INICIO.H" Y LISTO, NO ESTAS APLICANDO BIEN LO ANTERIOR, YA QUE ES LO MISMO PERO UN POCO MAS EXPLICADO...


BYE... <_<
///////////////////////
Título: Re: Variable Entre Formularios
Publicado por: Kabern en Miércoles 23 de Noviembre de 2005, 02:42
pones en el codigo del primer formulario:

extern int x;

pones en el codigo del segundo formulario:

extern int x;

y te va a conservar el valor entre las llamadas  de los formularios, checa mas a fondo extern es un modificador de almacenamiento de clase