child windows not closing and listboxes not clearing

i'm having a bit of a problem closing all of my child windows. each child
window has its own cancel button with [form name]->Close(); in the on click
event. the problem is that they don't close, they just stay there. if i
click on the x then it does close.

i know the event is fired because if i put ShowMessage("closing") in the
close event it shows the message box. the main window Close()s ok.

similarly i have a TListBox that won't clear. at the end of a delete button
click i have ListBox->Clear(); to delete all the items, but they just stay

i realise i've probably set a property wrong but i'm not sure where to look.
any help is appreciated. i'm using BCB6 10.166.