anchor.diff:      procedure TreeViewUsersSelectionChanged(Sender: TObject);
     private
       FIRC: TIRC;
  -    procedure AddChannelToList(const Channel: string);
  +    procedure AddChannelToTree(const Channel: string);
       procedure CloseChannel(const Channel: string);
       procedure CloseChannelTab(const Channel: string);
       procedure ConfigureMemo(var Memo: TMemo);
  +    function FindChannelNode(const Channel: string): TTreeNode;
       procedure MostrarConfig;
  -    function OnChannelJoined(const Nome: string): TStrings;
       procedure OnNickListReceived(const Channel: string; List: TStrings);
       procedure OnUserJoined(const Channel, User: string);
       procedure OnUserLeft(const Channel, User: string);
  -    function NovoCanal(const Canal: string): TStrings;
  +    function OnJoinChannel(const Channel: string): TStrings;
       procedure RemoveChannelFromList(const Channel: string);
       procedure RemoveUserFromChannelList(const User: string; const Channel: string);
       function GetTabByName(const Channel: string): TTabSheet;
  +    function NewChannelTab(const Channel: string): TTabSheet;
       procedure WmAfterShow(var Msg: TMessage); message WM_AFTER_SHOW;
       procedure AfterShow;
     public
  
positive.code: 
    FIRC.AutoJoinChannels;
    TreeViewUsers.AlphaSort;
  end;
  
  function TMainForm.OnChannelJoined(const Nome: string): TStrings;
  begin
    Result := NovoCanal(Nome);
  end;
  
  procedure TMainForm.OnNickListReceived(const Channel: string; List: TStrings);
  
negative.code:   PostMessage(Self.Handle, WM_AFTER_SHOW, 0, 0);
  end;
  
  function TMainForm.OnJoinChannel(const Channel: string): TStrings;
  var
    Tab: TTabSheet;
    Memo: TMemo;
  begin
    Tab := GetTabByName(Channel);
    if Tab = nil then
      Tab := NewChannelTab(Channel);
  
    Memo := Tab.Components[0] as TMemo; //TODO: Melhorar essa gambi
  
    PageControl.ActivePage := Tab;
    AddChannelToTree(Channel);
  
    Result := Memo.Lines;
  end;
  
  