Вы вызываете TCleaner.Create из метода TFrameAction. В момент нажатия на кнопку BtnClear какой-то FrameAction( FrameAction1,FrameAction2 ...) уже существует. И внутри обработчика BtnClearClick именно он и является Self. Что я и советовал сделать в своём первом посте.
а код
Код:
var
FrameAction: TFrameAction;
лучше удалите, чтобы Вас потом не путать. Если работать с Frame стандартным способом, в переменную FrameAction никогда ничего не будет присвоено.