create multiple forms from a TForm class in a multithread application

I need to open some dynamic windows from another thread, different
from the main VCL thread.
If I use main VCL thread all works fine (see code below)

//----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AddMyWindow();  

Quote
}

//----------------------------------------------------------------------
void __fastcall TForm1::AddMyWindow(void)
{
  wTuIPstats = new TuIPstats(Application);
  wTuIPstats->Show();
Quote
}

//----------------------------------------------------------------------

where TuIPstats is a derived class from TForm (created with BCB IDE).
BUT if the window's handler is another thread (I use a TThread derived
class),
I have the following code:

//----------------------------------------------------------------------
void TMyThread::AddNewStatForm()
{
  Synchronize( AddForm );
  /* It SHOULD stop this thread and run the AddForm()
  in main VCL thread, and then resume it */

Quote
}

//----------------------------------------------------------------------
void __fastcall TMyThread::AddForm()
{
  Form1->AddMyWindow();
Quote
}

//----------------------------------------------------------------------

In another module I try to call TMyThread::AddNewStatForm():

//----------------------------------------------------------------------
  extern TMyThread* myOnlyThread;
  myOnlyThread->AddNewStatForm();
//----------------------------------------------------------------------

This code is called by a function (in another module) but in the
"myOnlyThread" thread. (it's because the function is not a member of
the myOnlyThread class).

What did I do wrong? When the code arrives at Syncronize function it
never call AddForm() and all is stopped.
I'll proceed manipulating Windows's messages (with PostMessage etc) to
communicate between threads but I'd prefer to not take that way...
:""(

Thanks everybody,
Luca