No lo creo. Cambiar la selección por código involucra llamar al método SetItemIndex que manda el mensaje
LB_SETCURSEL mientras que la notificación de cambio de selección
LBN_SELCHANGE no se envia con el mensaje anterior, de acuerdo a la documentación.
Lo que yo haría, es crear un derivado de TListBox que redefina los métodos Click y SetItemIndex para lanzar un nuevo evento OnSelectionChange.
Por otro lado, también podrías considerar el cómo haces el cambio de selección por código. Si lo haces en un sólo punto o lo puedes centralizar mediante algún método del formulario, entonces no requieres derivar un componente, simplemente hacer la notificación en ese punto o método central.
// Saludos