Question: How do I make a simple method to rotate between forms? How do I add my own return results to a ShowModal form? How do I instantiate forms at runtime? Answer: The method required is quite simple to implement. For my example I used 3 forms, the Mainform, Form1, and Form2. I placed a button on the Mainform that will bring up Form1, then from that form you could rotate through any number of forms via buttons placed on those forms. For my example, only Form1 and Form2 can be flipped between. step 1. Places these two lines in the interface section of this Form, which will be refered to as the main form const mrNext = 100; mrPrevious = 101; step 2. On the main form add a button and add the following block of code into it. var MyForm: TForm; R, CurForm: Integer; begin R := 0; CurForm := 1; while R <> mrCancel do begin Case CurForm of 1: MyForm := TForm1.Create(Application); 2: MyForm := TForm2.Create(Application); end; try R := MyForm.ShowModal; finally MyForm.Free; end; case R of MrNext : Inc(CurForm); MrPrevious : Dec(CurForm); end; // these 2 lines will make sure we don't go out of bounds if CurForm < 1 then CurForm := 2 else if CurForm > 2 then CurForm := 1; end; // while end; step 3. Add forms 1 and 2 (and any others you are going to have) to the uses statement for the MainForm. step 4. On Form1 and Form2 add the MainForm to the uses (so they can see the constants. step 5. On Form1, Form2 and all subsequent forms add 2 TBitBtn's, labeled Next and Previous. In the OnClick Events for these buttons add the following line of code. If it's a Next Button add : ModalResult := mrNext; If it's a Previous Button add : ModalResult := mrPrevious;