SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Goselito_0 en Sábado 10 de Mayo de 2008, 20:32

Título: Declaracion De Variable
Publicado por: Goselito_0 en Sábado 10 de Mayo de 2008, 20:32
Hola, la duda es la siguiente:

¿Como tengo o donde tengo que declarar una variable o un objeto de una clase para poderlo utilizar en todos los posibles "Form" de mi proyecto?

Gracias de antemano.
Título: Re: Declaracion De Variable
Publicado por: el_shanky en Domingo 11 de Mayo de 2008, 03:09
para poder utilizarlo en todos los forms tenes que declaralo en la parte privada del ".H"

salute
Título: Re: Declaracion De Variable
Publicado por: Goselito_0 en Lunes 12 de Mayo de 2008, 20:56
He declarado la variable en el ".H" de un Form y me deja utlizarla en ese Form pero no en los demas,
¿hay alguna forma de declararla para que se me permita utilizarla en todos los Form? ¿o forzosamente debo declararla en el ".H" de cada Form?

Gracias de antemano por la utilísima ayuda.
Título: Re: Declaracion De Variable
Publicado por: el_shanky en Lunes 12 de Mayo de 2008, 21:02
No amigo pensá que ahora esa variable es un objeto de ese form, entonces como haces para llamar desde el form2 a algún objeto del form1???

Form1->variable_que_inventaste


Salute!
Título: Re: Declaracion De Variable
Publicado por: Elforious en Martes 13 de Mayo de 2008, 02:52
Tal vez lo que buscas es "extern".

Si tienes una variable global en una unidad, y la quieres utilizar en otra, declarás esta variable en el ".h" de la unidad origen, y en el ".cpp" de la unidad destino la declarás con "extern" (obviamente incluyendo la unidad origen en la destino):

Código: Text
  1. // Unidad_Origen.h
  2.  
  3. int Variable_Global;
  4.  
  5.  

Código: Text
  1. // Unidad_Destino.cpp
  2.  
  3. extern int Variable_Global;
  4.  
  5.  

Al menos así yo lo hago...

Espero haber ayudado.
Título: Re: Declaracion De Variable
Publicado por: Goselito_0 en Martes 13 de Mayo de 2008, 16:29
He probado a utilizar "extern" pero me da un linker error, he probado a declarar la variable en la parte privada y en la parte publica del .H origen, y en el .cpp destino, ¿me podrías decir con exactitud donde tengo que daclararla?

Os explico sin extenderme el problema concreto a ver si tuviera otra solucion:
En un Form cargo una imagen sobre la que hago click de raton, tras este click se realiza un procesado y se abre una ventana con opciones (otro Form), pero en este segundo Form necesito las coordenadas donde el raton hizo click en el Form anterior. ¿Existe alguna forma de abrir una pequeña ventana donde poder elegir entre varias opciones sin que tenga que ser otro Form?, si esto no fuera posible me temo que necesito las variables de mi Form anterior.  :(

Muchiiiisimas gracias por vuestra paciencia.
Título: Re: Declaracion De Variable
Publicado por: el_shanky en Martes 13 de Mayo de 2008, 18:59
a ver si te ayudamos...

Vas al .H (header) del Unit1, ahí no mas el parte PUBLIC abajo o al lado de donde te dice "// User declarations" declaras tu variable (en mi caso bool flag)

Código: Text
  1.  
  2.  
  3. //---------------------------------------------------------------------------
  4.  
  5. #ifndef Unit1H
  6. #define Unit1H
  7. //---------------------------------------------------------------------------
  8. #include <Classes.hpp>
  9. #include <Controls.hpp>
  10. #include <StdCtrls.hpp>
  11. #include <Forms.hpp>
  12. //---------------------------------------------------------------------------
  13. class TForm1 : public TForm
  14. {
  15. __published:  // IDE-managed Components
  16. private:  // User declarations
  17. public:    // User declarations
  18.         bool flag; //mi variable
  19.  
  20.         __fastcall TForm1(TComponent* Owner);
  21. };
  22. //---------------------------------------------------------------------------
  23. extern PACKAGE TForm1 *Form1;
  24. //---------------------------------------------------------------------------
  25. #endif
  26.  
  27.  
  28.  


Luego solo resta usarla en donde mas te guste!!!!

yo la uso en el unit 2 en el evento onShow

Código: Text
  1.  
  2.  
  3. //---------------------------------------------------------------------------
  4.  
  5. #include <vcl.h>
  6. #pragma hdrstop
  7.  
  8. #include "Unit2.h"
  9. #include "Unit1.h" //incluyo si o si el header de la unit donde se encuentra mi variable que quiero usar!!! FUNDAMENTAL
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma resource "*.dfm"
  13. TForm2 *Form2;
  14. //---------------------------------------------------------------------------
  15. __fastcall TForm2::TForm2(TComponent* Owner)
  16.         : TForm(Owner)
  17. {
  18. }
  19. //---------------------------------------------------------------------------
  20.  
  21. void __fastcall TForm2::FormShow(TObject *Sender)
  22. {
  23. Form1->flag=true;//uso de mi variable flag del Form1
  24. }
  25. //---------------------------------------------------------------------------
  26.  
  27.  
  28.  
  29.  


YA STA!!! con sto te tiene que haber quedado mas que claro!!! jajaaj cualquier cosa avisá... salute!
Título: Re: Declaracion De Variable
Publicado por: Goselito_0 en Miércoles 14 de Mayo de 2008, 13:26
Que haria yo sin vosotros... jejeje

Mil gracias, nos leeremos en las proximas dudas.

Un saludo.
Título: Re: Declaracion De Variable
Publicado por: el_shanky en Miércoles 14 de Mayo de 2008, 18:52
Que bueno que te hayamos podido ayudar!

Spero que te haya quedado claro este método ya que es el más limpio y el que tenes que seguir para cualquier tipo de objeto que quieras crear vos, ya sea variables o funciones.

Exitos!
Título: Re: Declaracion De Variable
Publicado por: fachamix en Sábado 17 de Mayo de 2008, 20:21
apuesto lo que sea a que no estaba incluyendo (#include) el .H donde la queria usar