Witam.
Mam problem przy tworzeniu nowej zakładki PageControl w kliencie irc która ma być tworzona przy próbie wejścia na nowy kanał. Ma ją wywoływać procedura OnJoin komponentu TidIRC ale za każdym razem kończy się to zawieszeniem się programu. Przed zawieszeniem się zostają wykonane jeszcze kolejne polecenia takie jak wypisanie tekstu na nowoutworzonym memo.
Próbowałem już filtrować komunikaty serwera i reagować na IdIRC1Raw ale sytuacja się powtarza.
Nie pojawiają się żadne błędy ani komunikaty. Komplikacja też przechodzi bez problemu.
Co dziwne wywołanie funkcji tworzenia nowej zakładki przez przycisk działa bez zarzutu i nie powoduje zawieszenia się.

Fragment programu:

Wywołanie funkcji:

procedure TForm1.IdIRC1Join(ASender: TIdContext; const ANickname, AHost,
  AChannel: string);
begin
  if ANickname = idirc1.nickname then
    begin
  CreateChannelTab(AChannel);
  GetMsg(AChannel,' *** Witaj na kanale ' + AChannel + ' ***');
    end;
end;
function Tform1.CreateChannelTab(NewTabName : String) : Boolean;
var
    NewTab: TTabSheet;
    NewListBox: TListBox;
    Newedit: TEdit;
    NewMsgWindow: TMemo;
begin
channels[chaninxtmp] :=  NewTabName;

NewTab := TTabSheet.Create(self);
try
 with NewTab do
  begin
    Caption := NewTabName;
    PageControl := PageControl1;
  end;
except
  on E: Exception do ShowMessage(E.Message+' '+IntToStr(E.HelpContext));
  end;

NewListBox := TListBox.Create(self);
try
    with NewListBox do
     begin
      Left := 616;
      Top := 0;
      Width := 121;
      Height := 428;
      TabOrder := 0;
      Parent := NewTab;
      Name := 'ListBox' + inttostr(chaninxtmp);
     end;
except
  on E: Exception do ShowMessage(E.Message+' '+IntToStr(E.HelpContext));
end;


NewMsgWindow := Tmemo.Create(self);
 try
  with NewMsgWindow do
    begin
      ReadOnly := true;
      Left := 0;
      Top := 0;
      Width := 617;
      Height := 428;
      Align := alCustom;
      Parent := NewTab;
      ReadOnly := True;
      OnClick := FormActivate;
      OnMouseUp := MsgWindowMouseUp;
      Name := 'MsgWindow' + inttostr(chaninxtmp);
      clear;
    end;
except
  on E: Exception do ShowMessage(E.Message+' '+IntToStr(E.HelpContext));
end;

Newedit := TEdit.Create(self);
 try
 with NewEdit do
 begin
    Left := 0;
    Top := 405;
    Width := 732;
    Height := 20;
    Align := alBottom;
    TabOrder := 1;
    OnKeyPress := ServerEditKeyPress;
    Parent := NewTab;
    Name := 'chanedit' + inttostr(chaninxtmp);
    OnKeyPress := EditEnter;
    clear;
 end;
except
  on E: Exception do ShowMessage(E.Message+' '+IntToStr(E.HelpContext));
end;

inc(chaninxtmp);
Result := true;

end; 

Z góry dziękuję za pomoc

P.S. Delphi 2007(RAD Studio) + Indy 10.1.5