Как определить источник изменения размера окна?
Наверное, мой юный друг, ты можешь, вызывая событие WMSIZE в своём коде, так же взводить какой-то флаг, а сбрасывать его в своём обработчике.
В компоненте пишем обработчик сообщения WM_SIZING. Сообщение отсылается только при действиях пользователя.procedure THiddenClassName.WmSizing(var Message: TMessage);
var
  Rect: PRect;
begin
  inherited;
  Rect := PRect(Message.LParam);
  FMaxHeight := Rect^.Height;
end;
Здесь WParam - Сторона, которую в данный момент изменяют. LParam - указатель на Rect