crear eventos en tiempo de ejecucion en delphi
La cosa es que tengo un array de checkbox y me gustarñia saber como puedo añadirles eventos a esos checkbox.
Oye, yo desarrollo en C++ Builder y sabes, lo unico que tienes que hacer es asignar a cada elemento de tu arreglo el CheckBox correspondiente y de esa manera puedes referenciar al CheckBox que quieras.
Por ejemplo: TCheckBox * MyArray[10];
Luego: MyArray[0]=CheckBox1; MyArray[1]=CheckBox2 ...... y asi sucesivamente. hasta llenar los diez CheckBox. Puedes tener los que quieras. A lo que voy es que con esto, despues podras referenciar al CheckBox que quieras por medio del arreglo.
Ej: MyArray[5]->Click();
para llamar el evento click del CheckBox5.
Solo traducelo al Delphi xq yo no conozco ese entorno.
Saludos.
Por ejemplo: TCheckBox * MyArray[10];
Luego: MyArray[0]=CheckBox1; MyArray[1]=CheckBox2 ...... y asi sucesivamente. hasta llenar los diez CheckBox. Puedes tener los que quieras. A lo que voy es que con esto, despues podras referenciar al CheckBox que quieras por medio del arreglo.
Ej: MyArray[5]->Click();
para llamar el evento click del CheckBox5.
Solo traducelo al Delphi xq yo no conozco ese entorno.
Saludos.
Hola, puedes seguir los siguientes pasos:
1.- Declarar el evento que quieres generar en ejecucion en el Unit1.h de tu form, en este caso te dare el ejemplo con el evento OnClick de los CheckBox (El evento que declares tiene que recibir los mismos parametros que uno hecho en diseño!!!!), de esta forma:
public: // User declarations
void __fastcall ArregloClick(TObject *Sender);
__fastcall TForm1(TComponent* Owner);
2.- Luego realizas la creacion del arreglo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCheckBox *Arreglo[15];
for(int i=0;i<15;i++)
{
Arreglo[i] = new TCheckBox(this);
Arreglo[i]->Parent=this;
Arreglo[i]->Top = i*10;
Arreglo[i]->Left = 0;
Arreglo[i]->Show();
//AQUI LE INDICAS Q EN ONCLICK HAGA LO DE ARREGLO CLICK
Arreglo[i]->OnClick = ArregloClick;
Arreglo[i]->Tag = i+1;
}
}
3.- Luego haces el cuerpo de la funcion en el Unit1.cpp de tu form:
void __fastcall TForm1::ArregloClick(TObject *Sender)
{
int cual =((TCheckBox*)Sender)->Tag;
switch(cual)
{
case 1:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 2:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 3:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 4:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 5:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 6:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 7:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
}
}
Y eso, si te fijas identifico el CheckBox que ha sido clikeado por medio de su propidedad Tag, a la cual le asigne un numero mientras iba creando el arreglo.
Espero te sirva.
_Viktor
Saludos!
1.- Declarar el evento que quieres generar en ejecucion en el Unit1.h de tu form, en este caso te dare el ejemplo con el evento OnClick de los CheckBox (El evento que declares tiene que recibir los mismos parametros que uno hecho en diseño!!!!), de esta forma:
public: // User declarations
void __fastcall ArregloClick(TObject *Sender);
__fastcall TForm1(TComponent* Owner);
2.- Luego realizas la creacion del arreglo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCheckBox *Arreglo[15];
for(int i=0;i<15;i++)
{
Arreglo[i] = new TCheckBox(this);
Arreglo[i]->Parent=this;
Arreglo[i]->Top = i*10;
Arreglo[i]->Left = 0;
Arreglo[i]->Show();
//AQUI LE INDICAS Q EN ONCLICK HAGA LO DE ARREGLO CLICK
Arreglo[i]->OnClick = ArregloClick;
Arreglo[i]->Tag = i+1;
}
}
3.- Luego haces el cuerpo de la funcion en el Unit1.cpp de tu form:
void __fastcall TForm1::ArregloClick(TObject *Sender)
{
int cual =((TCheckBox*)Sender)->Tag;
switch(cual)
{
case 1:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 2:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 3:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 4:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 5:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 6:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
case 7:
ShowMessage("Click en CheckBox : "+IntToStr(cual));
break;
}
}
Y eso, si te fijas identifico el CheckBox que ha sido clikeado por medio de su propidedad Tag, a la cual le asigne un numero mientras iba creando el arreglo.
Espero te sirva.
_Viktor
Saludos!