Hola.
Si escafandra, si se va a aplicar eventualmente a un control, esta última opción que mencionas la considero mas práctica por lo sencilla de implementar .
header
Código PHP:
...
class TForm1 : public TForm {
...
private:
TWndMethod OldWndProc;
void __fastcall NewWndProc(TMessage& Message);
void __fastcall vertScroll(TObject *Sender);
void __fastcall horzScroll(TObject *Sender);
...
};
code
Código PHP:
..
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldWndProc = ScrollBox1->WindowProc;
ScrollBox1->WindowProc = NewWndProc;
}
void __fastcall TForm1::NewWndProc(TMessage& Message)
{
if(Message.Msg == WM_VSCROLL)
vertScroll(ScrollBox1);
else if( Message.Msg == WM_HSCROLL)
horzScroll(ScrollBox1);
OldWndProc(Message);
}
void __fastcall TForm1::vertScroll(TObject *Sender) {
Caption = "Scroll vertical";
}
void __fastcall TForm1::horzScroll(TObject *Sender) {
Caption = "Scroll horizontal";
}
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
ScrollBox1->WindowProc = OldWndProc;
}
En cambio, optaría por la primera si se justificara por la reutilización del código (como en el caso de un componente).
Es decir, si voy a usar algo una vez en una aplicación y muy rara vez nuevamente, escribiría el código mas corto y simple si con él obtengo el mismo resultado (pero es mi humilde opinion).
Saludos
