none
Ayuda con forms crear una alarma RRS feed

  • Pregunta

  • buenas gente

    tengo que hacer una agenda de eventos donde la hora que capture haga sonar una alarma todo bien al hacer lo demas pero al momento de diseñar la alarma me quedo en blanco no pude hacer que lo que ponga en un textbox haga sonar la alarma el formato que lo day es hh:mm

    tambiem cunado la forma este cerrada y pasa la hora de la alarma me muestre un mensaje disiendo que el evento ya paso quiero saber si es posible hacer eso

    y tambiem otra cosa en una listbox cargos los elementos y con dos botones me muevo de arriba a bajo el primoro no hay problema pero el segundo cuando llegue al final truena

    this->listBox1->SelectedIndex = this->listBox1->SelectedIndex +1;

    el lenguaje que uso es CLR Windows forms

    gracias de antemano

    jueves, 4 de abril de 2013 2:35

Respuestas

  • Bueno, para evitar más suspicacias, me tomé la molestia de hacerte un ejemplo bien concreto en Visual Studio 2010 para que descargues y que funciona perfectamente:
    Consiste en una ventana con un label que da la hora actual, un maskedtextbos del formato hh:mm que es la hora que debe introducir el usuario para que suene la alarma, tiene un botón que vuelve la bandera a false para que vuelva a sonar.

    Acá te dejo el link:
    https://dl.dropbox.com/u/85211281/AlarmaCPlusPlus.rar
    Espero haberte ayudado.
    Saludos.

    Si la respuesta es correcta marcala como tal.


    BECKLESPINAX

    • Marcado como respuesta ns147 viernes, 5 de abril de 2013 17:30
    viernes, 5 de abril de 2013 14:59

Todas las respuestas

  • Podrías usar un Timer y dentro del evento de ese timer sacás la hora del sistema con
    System::DateTime ^a=System::DateTime::Now;//::Now;//::ToString(;
    System::String ^sss=a->ToString("hh:mm:ss");
    comparás sss con la hora guardada que deseás que sea la alarma, esa hora deberías guardarla en un archivo.
    El timer lo colocás con un Interval=1000 eso hace que verifique cada un segundo si la hora del sistema es iguál a la hora guardada, ojo, la hora guardad la sacás una sola vez del archivo y la guardás en un string, sino cada segundo va a abrir el archivo y cerrarlo.
    Para avisar que ya pasó el evento colocás lo que llamamos en programación, una bandera de tipo bool diciendo :
    bool bandera=false;
    if(sss==string_hora_guardada) 
    {

    //Hago sonar la alarma y coloco bandera =true

    bandera=true;

    }

    else
    {

    Coloco stop en la alarma

    bandera=false;

    }

    Saludos.


    BECKLESPINAX

    jueves, 4 de abril de 2013 6:50
  • gracias por la ayuda pero no funcinona aqui te dejo el codigo


    public: System::Void inicio(String^ valor){
    			   
    				String^ alarm = this->textHora->Text->ToString();
    				bool bandera = false;
    				if(valor==alarm){
    				bandera=true;
    				MessageBox::Show("Alarma");
    				}
    				else{
    				bandera=false;
    				}
    
     DateTime^ today = DateTime::Now;
    				toolStripStatusLabel1->Text = today->ToShortDateString();
    				toolStripStatusLabel2->Text = today->ToShortTimeString();
    				inicio(today->ToShortTimeString());


    jueves, 4 de abril de 2013 20:29
  • Si no lo colocás dentro del evento tick de un timer nunca te va a andar. El timer crea un hilo que actua en paralelo al formulario. Yo coloqué a grandes rasgos nada más. Acá te paso algo mejor, en NOMBRE_DE_TU_Formulario va justamente lo que dice la palabra saludos.


    //Declaro Variables
    private: System::Windows::Forms::Timer^  timer1;
    String ^hora_minuto_alarma;//Formato hh:mm Esta es la hora y minuto ingresada para que suene
    bool bandera;


    //Inicializo variables
    void InitializeComponent(void)
    {
    this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
    this->timer1->Enabled = true;
    this->timer1->Interval = 1000;
    this->timer1->Tick += gcnew System::EventHandler(this,&NOMBRE_DE_TU_FORMULARIO::timer1_Tick);

    bandera=false;
    }



    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {

    DateTime^ today = DateTime::Now;
    toolStripStatusLabel1->Text = today->ToString("hh:mm");


    if(bandera==false){
    if(today->ToString("hh:mm")==hora_minuto_alarma)
    {
    bandera=true;
    MessageBox::Show("Alarma");
    }
    }

     }

    BECKLESPINAX

    viernes, 5 de abril de 2013 1:03
  • gracias de  nuevo por la prota respuesta pero sigue sin funcionar
    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    			 
    			 	
    			    DateTime^ today = DateTime::Now;
    				toolStripStatusLabel1->Text = today->ToShortDateString();
    				toolStripStatusLabel2->Text = today->ToShortTimeString();
    				//inicio(today->ToShortTimeString());
    				this->hora_minuto_alarma=this->textHora->Text->ToString();
    		if(bandera==false){
    			if(today->ToString("hh:mm")==this->hora_minuto_alarma)
    				{
    				bandera=true;
    				MessageBox::Show("Alarma");
    				}
    		}
    		else{
    		bandera=false;
    		}
    			}



    • Editado ns147 viernes, 5 de abril de 2013 6:36
    viernes, 5 de abril de 2013 6:32
  • Bueno, para evitar más suspicacias, me tomé la molestia de hacerte un ejemplo bien concreto en Visual Studio 2010 para que descargues y que funciona perfectamente:
    Consiste en una ventana con un label que da la hora actual, un maskedtextbos del formato hh:mm que es la hora que debe introducir el usuario para que suene la alarma, tiene un botón que vuelve la bandera a false para que vuelva a sonar.

    Acá te dejo el link:
    https://dl.dropbox.com/u/85211281/AlarmaCPlusPlus.rar
    Espero haberte ayudado.
    Saludos.

    Si la respuesta es correcta marcala como tal.


    BECKLESPINAX

    • Marcado como respuesta ns147 viernes, 5 de abril de 2013 17:30
    viernes, 5 de abril de 2013 14:59