Getting Form1.ShowModal to return an object on close

Hello.  I would like to set up an application such that the user can
create a TStrings object within a dialog box (initiated by
Form1.ShowModal), and then when the dialog is closed the TStrings is
returned to the parent form.  I'm still building this application, but
I just wanted to check that my plan has a chance of working.  Here's
the basic scheme I'm using:

        unit Foo;

        interface

        uses
          {...}

        type
          TForm1 = class(TForm)
            {...}
          private
            {...}
          public
            function MakeContacts(OwnerID: Smallint): TStrings;
          end;

        var
          Form1: TForm1;
          ContactList: TStrings;

        implementation

        {$R *.DFM}

        function TForm1.MakeContacts(OwnerID: Smallint): TStrings;
        begin
        ContactList := TStringList.Create;
        try
          Form1.ShowModal;
        finally
          MakeContacts := ContactList;
          ContactList.Free;
          end;
        end;

So the parent form calls the function Form1.MakeContacts, which shows
Form1 modally, and passes back the TStrings object upon closing it.
My concern is that I am not declaring ContactList correctly (in the
interface section) by making it a separate object in the same unit as
Form1.  So I ask you:

(1) Will this work?

(2) Is there a better way to accomplish the same task?

I'd appreciate any comments, as I am teaching myself Delphi and Usenet
is my only means for reaching people who might know better than me.

Thanks,
Jake.