title: Updating a child from a child not working
body: <p>Form 10 creates and shows form11 and form11 creates and shows form12.  Then form12 tries to update a control on form10 (successful), a control on form11(access violation) and control on form12(successful).  Why do I get an access violation updating the middle form, form11.  Commented Statements 30 and 31 do not work and I would like to know why please.  30 is updating the middle form.  31 is an aside, not related but it does not work and I am not sure why it bombs.  </p>
  
  <pre><code>1: unit Unit10;
  2:
  3: interface
  4:
  5: uses
  6: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7: Dialogs, StdCtrls;
  8:
  9: type
  10: TForm10 = class(TForm)
  11: Button1: TButton;
  12: procedure Button1Click(Sender: TObject);
  13: private
  14: { Private declarations }
  15: public
  16: { Public declarations }
  17: end;
  18:
  19: var
  20: Form10: TForm10;
  21:
  22: implementation
  23: uses Unit11;
  24:
  25: {$R *.dfm}
  26:
  27: procedure TForm10.Button1Click(Sender: TObject);
  28: var
  29: fForm11 : TForm11;
  30: begin
  31: fForm11 := TForm11.Create(Application);
  32: fForm11.show;
  33: end;
  34:
  35: end. 
  
  1: unit Unit11;
  2:
  3: interface
  4:
  5: uses
  6: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7: Dialogs, StdCtrls;
  8:
  9: type
  10: TForm11 = class(TForm)
  11: Button1: TButton;
  12: procedure Button1Click(Sender: TObject);
  13: private
  14: { Private declarations }
  15: public
  16: { Public declarations }
  17: end;
  18:
  19: var
  20: Form11: TForm11;
  21:
  22: implementation
  23: uses Unit12, Unit10;
  24:
  25: {$R *.dfm}
  26:
  27: procedure TForm11.Button1Click(Sender: TObject);
  28: var
  29: fForm12 : TForm12;
  30: begin
  31: form10.Button1.Caption := 'done';
  32: fForm12 := TForm12.Create(Self);
  33: fForm12.show;
  34: end;
  35:
  36: end.
  
  1: unit Unit12;
  2:
  3: interface
  4:
  5: uses
  6: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7: Dialogs, StdCtrls;
  8:
  9: type
  10: TForm12 = class(TForm)
  11: Button1: TButton;
  12: procedure Button1Click(Sender: TObject);
  13: private
  14: { Private declarations }
  15: public
  16: { Public declarations }
  17: end;
  18:
  19: var
  20: Form12: TForm12;
  21:
  22: implementation
  23: uses Unit11, Unit10;
  24:
  25: {$R *.dfm}
  26:
  27: procedure TForm12.Button1Click(Sender: TObject);
  28: begin
  29: Form10.Button1.Caption := 'Unit10';
  30: //Form11.Button1.Caption := 'Unit11';   //get an access violation
  31: //Form12.Button1.Caption := 'Unit12';   //get an access violation           
  32: Button1.Caption := 'Unit12';            //this same as 31 without Form12 prefix
  33: end;
  34:
  35: end.
  </code></pre>