bei PostMessage(FHandle, WM_CONTROL_VALUE_CHANGE, Integer(AValue), 0);
ist der Zeiger auf AValue als Stackwert ungültig bis die Message abgearbeitet wird, da SetValue bereits wieder verlassen wurde.
Das wollte ich auch grade sagen
Dann noch das Gecaste mit dem bösen Integer.
Nimm stattdessen den Typ LPARAM, bzw. WPARAM, LRESULT oder eben NativeInt und Co.
Statt SendMessage kannst du auch Perform nutzen.
Delphi-Quellcode:
SendMessage(FHandle, WM_CONTROL_VALUE_CHANGE, LPARAM(AValue), 0);
Perform(WM_CONTROL_VALUE_CHANGE, LPARAM(AValue), 0);