• Lunes 29 de Abril de 2024, 22:08

Autor Tema:  Pequeño Problema  (Leído 2428 veces)

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Pequeño Problema
« en: Lunes 7 de Junio de 2004, 21:50 »
0
Buenas

Tengo un problema, tengo 2 formularios (Form1 y Form2), el Form1 tiene un Edit (Edit1) y un Boton (Button1), el Form2 tiene un boton (Button2), basicamente lo q quiero hacer es q en el Form1 al tocar el boton se muestre el Form2 y si en el Edit escribí op, el boton del Form2 tiene q estar permitido, de lo contrario no...

yo lo hago con una variable global, pero no funciona:

Código: Text
  1.  
  2. //Esto en el Form1
  3. void __fastcall TForm1::Button1Click(TObject *Sender)
  4. {
  5.  if (Edit1->Text == "op")
  6.   variable=1;   //Variable declarada en el .h como publica
  7.  else
  8.   variable=0;
  9.  
  10. Form2->ShowModal();
  11.  
  12. }
  13.  
  14. //Esto en el Form2
  15. void __fastcall TForm2::FormCreate(TObject *Sender)
  16. {
  17.  if (Form1->variable == 1)
  18.   Button1->Enabled = true;
  19.  else
  20.   Button1->Enabled = false;
  21. }
  22.  
  23.  

aclaro que inclui los correspondientes Unit.cpp en cada formulario, no me da erros pero la variable es como si siempre tuviera el valor de 0.

Saludos

Adrian
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

lordford

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #1 en: Martes 8 de Junio de 2004, 04:00 »
0
Hola:

intenta esto, la explicacion no la se, ya algun otro usuario la dara, la verdad es que no se por que no funciona, aqui te pongo un ejemplo, asi si lo hace.

Código: Text
  1. void __fastcall TForm1::Button1Click(TObject *Sender)
  2. {
  3.  
  4.         variable = 0;
  5.  
  6.         if (Edit1->Text == "op")
  7.         {
  8.                  variable=1;
  9.                  Form2->Button1->Enabled = 1;
  10.         }
  11.         else
  12.         {
  13.                 variable = 0;
  14.                 Form2->Button1->Enabled = 0;
  15.         }
  16.  
  17.         Form2->ShowModal();
  18.  
  19. }
  20.  

Salu2,

 :smartass:  :hola:  B)  :lol:

LordFord
~ Si quieres que algo en la vida te salga bien]~

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #2 en: Martes 8 de Junio de 2004, 06:12 »
0
Cita de: "Devilcpc"
Buenas

Tengo un problema, tengo 2 formularios
Bla bla bla bla bal

bla bla

bla
 :blink:

¿Por que lo pusiste en el Create?

void __fastcall TForm2::FormCreate(TObject *Sender)

Esa ventana no se creará cada vez que presiones el otro botón, por que sólo se "mostrará" (según tu código), pero ya estará creada al principio. Por eso cambiar al valor de tu variable no pasara NADA.

ChangSoft

  • Miembro activo
  • **
  • Mensajes: 30
  • Nacionalidad: mx
  • Facilitando el Trabajo con T.I.
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #3 en: Martes 8 de Junio de 2004, 10:54 »
0
Ya que tengas tus dos ventanas o form hechos el Form1 con el edit y el buton (Edit1 y Button1) en el Form2 con el boton (Button1)


Ahora presiona Alt+F11 en uno de los forms (si es el form1 agrega el form2) y haces lo mismo con el otro form.

Hora en el archivo .h (Ctrl+F6) del form1 (o donde se encuentre tu Edit1) creo una variable de tipo "bool" donde en la parte de hasta abajo donde dice public...

Ejemplo:
   
.....Public:
              bool check;

Ahora bien dale doble click al button1 de tu form1 y poner el codigo:
     
if(!StrComp(Edit1->Text.c_str(),"OP"))
 {
  check=1;
 Form2->ShowModal();
 }

Ahora bien en la forma2 en los Eventos, dale en  FormActivate (doble click) te pondra algo entre llaves y pones:

if(Form1->Check)
 Button1->Enabled=true;



espero te sirva ok!!!
Practicado y Leyendo Obtendras lo que Buscas

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #4 en: Miércoles 9 de Junio de 2004, 00:27 »
0
Lo hice tal cual como decis pero no funciona, el boton esta siempre permitido....
??
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #5 en: Miércoles 9 de Junio de 2004, 00:42 »
0
La forma que usa lordford si funciona, gracias...
aunq se complica mas ya q hay q hacer todo el codigo en un formulario..

saludos  :hola:
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

AURED

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #6 en: Jueves 10 de Junio de 2004, 01:30 »
0
Si quieres mantener tu forma original y no usa la de lordford prueba a sustituir el evento OnCreate del form2 por el evento OnShow y coloca alli el código que has escrito....funciona.
"Es mejor saber después de haber pensado y discutido que aceptar los saberes que nadie discute para no tener que pensar"

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #7 en: Viernes 11 de Junio de 2004, 01:10 »
0
tenes razon ahi me funcionio

Gracias AURED y a los otros tamb
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Pequeño Problema
« Respuesta #8 en: Viernes 11 de Junio de 2004, 07:20 »
0
Es mas semasmasticamente correcto (o sea correcto para C++ :P) que sobrecarges el metodo Showmodal del form2, y le agreges el aprametro que corresponde a tu variable global "check", quedaria algo asi:


Código: Text
  1. int __fastcall TForm2::ShowModal(bool check)
  2. {
  3.     Boton1->Enabled = check; //si es true, si, si no, no.
  4. }
  5.  
  6. //Y en el .h del TForm2 agregas:
  7.  
  8. class .....
  9. {
  10. public:
  11. ....
  12. ....
  13.   int __fastcall ShowModal (bool chcke);
  14. ...
  15. ...
  16.  
  17. }
  18.  
  19.  
  20. //Entonces despues desde form1 podes usar:
  21.  
  22. if (Edit1->Text == "op")
  23.   Form2->ShowModal (true);
  24. else
  25.   Form2->ShowModal (false);
  26.  

Y listo, no es tan complejo, es ams claro, mas orientado a objetos, y menos riesgoso que tener una global.

Saludos.
QliX=D! - From the top of Tsunami