Ignore:
Timestamp:
Mar 7, 2011, 1:32:07 PM (13 years ago)
Author:
george
Message:
  • Fixed: Docking popupmenu action Close and Rename.
  • Added: Partialy implemented tab hiding.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Docking/CoolDocking/UCoolDockStyleTabs.pas

    r129 r176  
    7171  // Hide all clients
    7272  with TCoolDockManager(Manager) do
    73   for I := 0 to DockPanels.Count - 1 do begin
    74     TCoolDockClientPanel(DockPanels[I]).Control.Hide;
    75     TCoolDockClientPanel(DockPanels[I]).ClientAreaPanel.Hide;
    76     TCoolDockClientPanel(DockPanels[I]).ClientAreaPanel.Parent := DockSite;
    77     TCoolDockClientPanel(DockPanels[I]).Control.Align := alClient;
    78     //ShowMessage(TCoolDockClientPanel(DockPanels[I]).Control.ClassName);
    79     Application.ProcessMessages;
    80 
    81     // Workaround for "Cannot focus" error
    82     TForm(TCoolDockClientPanel(DockPanels[I]).Control).ActiveControl := nil;
    83   end;
     73  for I := 0 to DockPanels.Count - 1 do
     74    if TCoolDockClientPanel(DockPanels[I]).Control.Visible then begin
     75      TCoolDockClientPanel(DockPanels[I]).Control.Tag := 1;
     76      TCoolDockClientPanel(DockPanels[I]).Control.Hide;
     77      TCoolDockClientPanel(DockPanels[I]).ClientAreaPanel.Hide;
     78      TCoolDockClientPanel(DockPanels[I]).ClientAreaPanel.Parent := DockSite;
     79      TCoolDockClientPanel(DockPanels[I]).Control.Align := alClient;
     80      //ShowMessage(TCoolDockClientPanel(DockPanels[I]).Control.ClassName);
     81      Application.ProcessMessages;
     82
     83      // Workaround for "Cannot focus" error
     84      TForm(TCoolDockClientPanel(DockPanels[I]).Control).ActiveControl := nil;
     85    end;
    8486
    8587  // Show selected
     
    8890    with TCoolDockClientPanel(DockPanels[TabControl.TabIndex]), ClientAreaPanel do begin
    8991      Control.Show;
     92      Control.Tag := 0;
    9093      (*AutoHide.Enable := True;
    9194      if AutoHide.Enable then begin
     
    160163  TabImageList.Clear;
    161164  with TCoolDockManager(Manager) do
    162   for I := 0 to DockPanels.Count - 1 do begin
     165  for I := 0 to DockPanels.Count - 1 do
     166  if TCoolDockClientPanel(DockPanels[I]).Control.Visible then begin
     167    TCoolDockClientPanel(DockPanels[I]).Control.Tag := 1;
    163168    TabControl.Tabs.Add(TCoolDockClientPanel(DockPanels[I]).Control.Caption);
    164169    TabImageList.Add(TCoolDockClientPanel(DockPanels[I]).Header.Icon.Picture.Bitmap, nil);
     
    187192begin
    188193  inherited;
    189   TabControl.Tabs.Add(AControl.Caption);
    190   TabImageList.Add(NewPanel.Header.Icon.Picture.Bitmap, nil);
    191   if Assigned(NewPanel.Splitter) then
    192     NewPanel.Splitter.Visible := False;
    193   NewPanel.ClientAreaPanel.Visible := False;
    194   NewPanel.Visible := False;
    195   TabControlChange(Self);
     194  if AControl.Visible then begin
     195    AControl.Tag := 1;
     196    TabControl.Tabs.Add(AControl.Caption);
     197    TabImageList.Add(NewPanel.Header.Icon.Picture.Bitmap, nil);
     198    if Assigned(NewPanel.Splitter) then
     199      NewPanel.Splitter.Visible := False;
     200    NewPanel.ClientAreaPanel.Visible := False;
     201    NewPanel.Visible := False;
     202    TabControlChange(Self);
     203  end;
    196204end;
    197205
     
    216224      with TCoolDockClientPanel(DockPanels[TabControl.TabIndex]) do begin
    217225        //Show;
    218         if AValue then Control.Show;
     226        if AValue and (not Control.Visible) and (Control.Tag = 1) then begin
     227          Control.Show;
     228          Control.Tag := 0;
     229        end;
    219230        //TabControl.Show;
    220231        //ClientAreaPanel.Show;
     
    227238begin
    228239  inherited;
    229   if not Visible then
    230   if Assigned(TWinControl(Control).DockManager) then
    231   with TCoolDockManager(TWinControl(Control).DockManager) do begin
     240  if not Visible then begin
     241    if Assigned(TWinControl(Control).DockManager) then
     242    with TCoolDockManager(TWinControl(Control).DockManager) do begin
    232243//    ShowMessage(IntToStr(TabControl.TabIndex) + ' ' + IntToStr(DockPanels.Count));
    233244//    TabControl.Tabs[0].;
     
    237248//    end;
    238249    //    ShowMessage(IntToStr(DockPanels.Count));
     250      if Control.Tag = 0 then begin
     251        TabImageList.Delete(TabControl.Tabs.IndexOf(Control.Caption));
     252
     253        with TabControl.Tabs do
     254          Delete(IndexOf(Control.Caption));
     255      end;
     256    end;
     257  end else
     258  begin
     259    if Control.Tag = 0 then begin
     260      TabImageList.Add(TCoolDockClientPanel(TCoolDockManager(Manager).FindControlInPanels(Control)).Header.Icon.Picture.Bitmap, nil);
     261      TabControl.Tabs.Add(Control.Caption);
     262    end;
    239263  end;
    240264end;
     
    242266procedure TCoolDockStyleTabs.SetTabsPos(const AValue: THeaderPos);
    243267begin
    244   (*if FTabsPos = AValue then Exit;
     268  if FTabsPos = AValue then Exit;
    245269  FTabsPos := AValue;
    246270  with TabControl do
     
    266290      Height := GrabberSize;
    267291    end;
    268   end;       *)
     292  end;
    269293end;
    270294
Note: See TracChangeset for help on using the changeset viewer.