anchor.diff:  var
     thd: TBuilderThread;
   begin
  +  ClearMessagesWindow;
     thd := TBuilderThread.Create(True);
     thd.BuildMode := 2;
     thd.OnTerminate := @BuildTerminated;
  +  thd.OnAvailableOutput := @BuildOutput;
     thd.Resume;
   end;
   
  
positive.code:     procedure   tvProjectDoubleClick(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; const AMousePos: TPoint);
      procedure   TabSheetClosing(Sender: TObject; ATabSheet: TfpgTabSheet);
      procedure   BuildTerminated(Sender: TObject);
      procedure   UpdateStatus(const AText: TfpgString);
      procedure   SetupProjectTree;
      procedure   PopuplateProjectTree;
      procedure   SetupFilesGrid;
      procedure   AddMessage(const AMsg: TfpgString);
      procedure   CloseAllTabs;
      procedure   LoadProject(const AFilename: TfpgString);
      function    OpenEditorPage(const AFilename: TfpgString): TfpgTabSheet;
  
negative.code: 
  procedure TMainForm.AddMessage(const AMsg: TfpgString);
  begin
    grdMessages.BeginUpdate;
    grdMessages.RowCount := grdMessages.RowCount + 1;
    grdMessages.Cells[0,grdMessages.RowCount-1] := AMsg;
    grdMessages.FocusRow := grdMessages.RowCount;
    grdMessages.EndUpdate;
  //  fpgApplication.ProcessMessages;
  end;
  
  procedure TMainForm.ClearMessagesWindow;
  begin
    grdMessages.RowCount := 0;
  end;
  
  procedure TMainForm.CloseAllTabs;
  