No me había percatado de este tema hasta ahora. Voy a poner mi granito de arena.
En primer lugar y como solución sencilla sería llamar al evento
OnChange cada vez que usemos la propiedad
ActivePageIndex, de forma "manual". Tiene la ventaja de ser sencillo y comprenderse bien, pero no es automático:
Código:
PageControl1->ActivePageIndex = 3;
PageControl1Change(this);
Una segunda solución mas avanzada y parecida a la solución de
roman y
Neftali sería reescribir el método
SetActivePageIndex de la clase
TPageControl. Tiene la ventaja de automatizar el proceso, el evento OnChange se lanzará con cada asignación de ActivePageIndex:
Código:
// Nueva definición de SetActivePageIndex de la clase TPageControl
void __fastcall TPageControl::SetActivePageIndex(const int Value)
{
if (Value > -1 && Value < PageCount)
ActivePage = Pages[Value];
else
ActivePage = 0;
if(OnChange) OnChange(this); // Lanzamos el Evento
}
// Asignación de ActivePageIndex
void __fastcall TForm1::Button1Click(TObject *Sender)
{
PageControl1->ActivePageIndex = 1;
}
// Evento OnChange
void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
ShowMessage("Eureca");
}
Saludos.