I had an easier way of checking.
I went to TCustomForm.Destroy, and I checked the code there.
The DoDestroy gets raised there BEFORE inherited Destroy;. A few Control clicks revealed that TControl.Destroy goes by all owned components, and frees them. Unless Powerdraw is written at a weird way , or somehow all my sourcefiles got tampered, I still think that the OnDestroy event gets called BEFORE the components are freed.

Well another easy way of checking. Query Edit1.Text in your OnDestroy, and show it in a message box. You might not see the messagebox, since the application is being terminated, but if there is no AV the edit control must still have existed

But well.. an AV occuring in -ANY- component, is a bug. If the user (programmer in this case) can cause it without making THackXXX descendants or other dirty tricks, I see no excuses for allowing an AV to happen. I don't have Delphi available right now, but did you set the pointers to nil after freeing the stuff the AV comes with? Otherwise it's not useful to check for nil

I think I'll stop posting in this thread.. I don't want to appear hostile... yet