Estaba preparando un ejemplo, pero veo que ya resolviste el problema. Aún así lo dejo.
Fíjate en este código basado en el tuyo. Es un componente visual que debes instalar:
Menu->Component->Intall Component
Código:
//---------------------------------------------------------------------------
#ifndef NewScrollBoxH
#define NewScrollBoxH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class PACKAGE TNewScrollBox : public TScrollBox
{
public:
__fastcall TNewScrollBox(TComponent* Owner);
private:
TNotifyEvent FOnVerticalScroll;
TNotifyEvent FOnHorizontalScroll;
private:
void __fastcall WMHScroll(TMessage& Msg);
void __fastcall WMVScroll(TMessage& Msg);
__published:
__property TNotifyEvent OnVerticalScroll =
{read=FOnVerticalScroll,
write=FOnVerticalScroll};
__property TNotifyEvent OnHorizontalScroll =
{read=FOnHorizontalScroll,
write=FOnHorizontalScroll};
public:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HSCROLL, TMessage, WMHScroll)
MESSAGE_HANDLER(WM_VSCROLL, TMessage, WMVScroll)
END_MESSAGE_MAP(TScrollBox)
};
//---------------------------------------------------------------------------
#endif
Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "NewScrollBox.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TNewScrollBox *)
{
new TNewScrollBox(NULL);
}
//---------------------------------------------------------------------------
__fastcall TNewScrollBox::TNewScrollBox(TComponent* Owner)
: TScrollBox(Owner)
{
}
void __fastcall TNewScrollBox::WMHScroll(TMessage& Msg)
{
if (FOnHorizontalScroll != NULL)
{
FOnHorizontalScroll(this);
}
TScrollBox::Dispatch(&Msg);
}
void __fastcall TNewScrollBox::WMVScroll(TMessage& Msg)
{
if (FOnVerticalScroll != NULL)
{
FOnVerticalScroll(this);
}
TScrollBox::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
namespace Newscrollbox
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TNewScrollBox)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
Te subo el proyecto del nuevo componente.
Saludos.