Buenas y feliz año nuevo a todos.
Tengo una función definida de la siguiente forma:
Código:
bool ClickLista(TListView *evLista)
{
if ((evLista->Items->Item[0]->Caption == "SELECCIONAR TODOS" || evLista->Items->Item[0]->Caption == "SELECCIONAR NINGUNO") && evLista->Items->Item[0]->Checked)
{
evLista->Items->Item[0]->Checked = false;
for (int nValor = 1; nValor < evLista->Items->Count; nValor ++)
evLista->Items->Item[nValor]->Checked = evLista->Items->Item[0]->Caption == "SELECCIONAR TODOS" ? true : false;
evLista->Items->Item[0]->Caption = evLista->Items->Item[0]->Caption == "SELECCIONAR TODOS" ? "SELECCIONAR NINGUNO" : "SELECCIONAR TODOS";
}
for (int nValor = 0; nValor < evLista->Items->Count; nValor ++)
if (evLista->Items->Item[nValor]->Checked)
{
evLista->Items->Item[nValor]->Selected;
return true;
}
return false;
}
//---------------------------------------------------------------------------
La uso en varias TListView que tengo en la aplicación para ahorrarme código. En cada uno de estos TListView tengo definidos los eventos OnChange y OnClick así:
Código:
void __fastcall TfCamAfi::ListaChange(TObject *Sender, TListItem *Item, TItemChange Change)
{
ListaClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TfCamAfi::ListaClick(TObject *Sender)
{
Lista->OnChange = NULL;
Button3->Enabled = ClickLista(Lista);
Lista->OnChange = ListaChange;
}
//---------------------------------------------------------------------------
Para ahorrarme código y, sobre todo, evitar que se me olviden esas líneas en el segundo evento sobre el
OnChange me pregunto si habría alguna forma en la función
ClickLista de "guardar" de alguna forma el evento asociado al OnChange de forma que al entrar en esa función ClickLista se pusiera a NULL y al completarse volviera a tener su valor orginal.