Ignore:
Timestamp:
Mar 11, 2011, 2:16:50 PM (14 years ago)
Author:
george
Message:
 
Location:
Docking/CoolDocking/Managers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Docking/CoolDocking/Managers/UCDManagerRegions.pas

    r194 r195  
    1515
    1616  TCDManagerRegionsItem = class(TCDManagerItem)
    17     Panel: TPanel;
     17    PanelHeader: TCDPanelHeader;
    1818    Splitter: TSplitter;
    19     ClientAreaPanel: TPanel;
    2019    constructor Create;
     20    destructor Destroy; override;
    2121  end;
    2222
     
    3131    //Panels: TObjectList; // TObjectList<TCDStyleRegionsPanel>
    3232    function FindControlInPanels(Control: TControl): TCDManagerItem; override;
     33    procedure InsertControlNoUpdate(Control: TControl; InsertAt: TAlign);
    3334    procedure InsertControlPanel(Control: TControl; InsertAt: TAlign;
    3435      DropCtl: TControl); override;
     
    5455constructor TCDManagerRegionsItem.Create;
    5556begin
    56   Panel := TPanel.Create(nil);
    57 
    58   ClientAreaPanel := TPanel.Create(Panel);
    59   with ClientAreaPanel do begin
    60     Parent := Panel;
    61     Visible := True;
    62     DockSite := True;
    63     UseDockManager := True;
    64     Align := alClient;
    65     BevelInner := bvNone;
    66     BevelOuter := bvNone;
    67     //Color := clGreen;
    68   end;
    69   Splitter := TSplitter.Create(Panel);
     57  PanelHeader := TCDPanelHeader.Create(nil);
     58  PanelHeader.Header.ManagerItem := Self;
     59
     60  Splitter := TSplitter.Create(nil);
    7061  with Splitter do begin
    71     Parent := Panel;
     62    //Parent := Panel;
    7263    //Color := clRed;
    7364  end;
     65end;
     66
     67destructor TCDManagerRegionsItem.Destroy;
     68begin
     69  inherited Destroy;
    7470end;
    7571
     
    10096end;
    10197
     98procedure TCDManagerRegions.InsertControlNoUpdate(Control: TControl;
     99  InsertAt: TAlign);
     100var
     101  NewItem: TCDManagerRegionsItem;
     102begin
     103  NewItem := TCDManagerRegionsItem.Create;
     104  with NewItem do begin
     105    PanelHeader.Parent := Self.DockSite;
     106    Manager := Self;
     107    if DockStyle = dsList then Visible := True;
     108    PanelHeader.Header.PopupMenu := Self.PopupMenu;
     109  end;
     110  if (Control is TForm) and Assigned((Control as TForm).Icon) then
     111    NewItem.PanelHeader.Header.Icon.Picture.Assign((Control as TForm).Icon);
     112    NewItem.PanelHeader.Parent := DockSite;
     113
     114    NewItem.Control := Control;
     115    Control.AddHandlerOnVisibleChanged(NewItem.VisibleChange);
     116    Control.Parent := NewItem.PanelHeader.ControlPanel;
     117    Control.Align := alClient;
     118    if (InsertAt = alTop) or (InsertAt = alLeft) then
     119      DockItems.Insert(0, NewItem)
     120      else DockItems.Add(NewItem);
     121  end;
     122
    102123procedure TCDManagerRegions.InsertControlPanel(Control: TControl; InsertAt: TAlign;
    103124  DropCtl: TControl);
    104125var
    105   NewPanel: TCDManagerRegionsItem;
     126  NewItem: TCDManagerRegionsItem;
    106127  I: Integer;
    107128  NewDirection: TCDDirection;
     
    131152      end;
    132153    end;
    133 
    134     NewPanel := TCDManagerRegionsItem.Create;
    135     with NewPanel do begin
    136       Panel.Parent := Self.DockSite;
    137       Manager := Self;
    138       if DockStyle = dsList then Visible := True;
    139       Header.PopupMenu := Self.PopupMenu;
    140       //PopupMenu.Parent := Self.DockSite;
    141     end;
    142     if (Control is TForm) and Assigned((Control as TForm).Icon) then
    143       NewPanel.Header.Icon.Picture.Assign((Control as TForm).Icon);
    144 
    145     NewPanel.Control := Control;
    146     Control.AddHandlerOnVisibleChanged(NewPanel.VisibleChange);
    147     Control.Parent := NewPanel.ClientAreaPanel;
    148     Control.Align := alClient;
    149     if (InsertAt = alTop) or (InsertAt = alLeft) then
    150       DockItems.Insert(0, NewPanel)
    151       else DockItems.Add(NewPanel);
     154    InsertControlNoUpdate(Control, InsertAt);
    152155  end;
    153156  UpdateClientSize;
     
    156159procedure TCDManagerRegions.RemoveControl(Control: TControl);
    157160var
    158   ClientPanel: TCDManagerItem;
     161  ManagerItem: TCDManagerItem;
    159162  ClientCount: Integer;
    160163begin
    161   ClientPanel := FindControlInPanels(Control);
    162   Control.RemoveHandlerOnVisibleChanged(ClientPanel.VisibleChange);
    163 
    164   DockItems.Remove(ClientPanel);
     164  ManagerItem := FindControlInPanels(Control);
     165  if Assigned(ManagerItem) then
     166    Control.RemoveHandlerOnVisibleChanged(ManagerItem.VisibleChange);
     167
     168  DockItems.Remove(ManagerItem);
    165169  ClientCount := DockItems.Count;
    166170
     
    184188var
    185189  I: Integer;
     190  NewItem: TCDManagerRegionsItem;
    186191begin
    187192  inherited;
     
    189194  FDockItems := TObjectList.Create;
    190195
    191   for I := 0 to DockItems.Count - 1 do begin
    192     if Assigned(TCDManagerRegionsItem(DockItems[I]).Splitter) then
    193     with TCDManagerRegionsItem(DockItems[I]) do begin
    194       Splitter.Visible := True;
    195       Panel.Visible := True;
    196       ClientAreaPanel.Parent := TCDManagerRegionsItem(DockItems[I]).Panel;
    197       ClientAreaPanel.Visible := True;
    198       Control.Visible := True;
    199     end;
    200   end;
     196  for I := 0 to ADockSite.DockClientCount - 1 do
     197    InsertControlNoUpdate(ADockSite.DockClients[I], alLeft);
     198  UpdateClientSize;
    201199end;
    202200
     
    214212  for I := 0 to FDockItems.Count - 1 do
    215213    with TCDManagerRegionsItem(FDockItems[I]) do begin
    216       Panel.Invalidate;
     214      PanelHeader.Invalidate;
    217215    end;
    218216end;
     
    233231  for I := 0 to DockItems.Count - 1 do
    234232  with TCDManagerRegionsItem(DockItems[I]) do begin
    235     Panel.Left := SplitterLeft;
    236     Panel.Top := SplitterTop;
    237     Panel.Height := Self.DockSite.Height div
     233    PanelHeader.Left := SplitterLeft;
     234    PanelHeader.Top := SplitterTop;
     235    PanelHeader.Height := Self.DockSite.Height div
    238236      Self.DockSite.DockClientCount;
    239     Panel.Width := Self.DockSite.Width div
     237    PanelHeader.Width := Self.DockSite.Width div
    240238      Self.DockSite.DockClientCount;
    241239    //TCDClientPanel(FDockPanels[I]).DockPanelPaint(Self);
    242     if I < (DockItems.Count - 1) then Panel.Align := BaseAlign
    243       else Panel.Align := alClient;
    244 
    245     Inc(SplitterLeft, Panel.Width);
    246     Inc(SplitterTop, Panel.Height);
     240    if I < (DockItems.Count - 1) then PanelHeader.Align := BaseAlign
     241      else PanelHeader.Align := alClient;
     242
     243    Inc(SplitterLeft, PanelHeader.Width);
     244    Inc(SplitterTop, PanelHeader.Height);
    247245    Splitter.Left := SplitterLeft;
    248246    Splitter.Top := SplitterTop;
     
    255253    Paint(Self);
    256254    if I < (DockItems.Count - 1) then begin
    257       if DockDirection = ddHorizontal then Panel.Align := alLeft
    258         else Panel.Align := alTop;
    259     end else Panel.Align := alClient;
     255      if DockDirection = ddHorizontal then PanelHeader.Align := alLeft
     256        else PanelHeader.Align := alTop;
     257    end else PanelHeader.Align := alClient;
    260258  end;
    261259end;
  • Docking/CoolDocking/Managers/UCDManagerTabs.pas

    r194 r195  
    1111
    1212type
    13   TCDManagerTabsITem = class(TCDManagerItem)
    14 
     13
     14  { TCDManagerTabsItem }
     15
     16  TCDManagerTabsItem = class(TCDManagerItem)
     17    Icon: TImage;
     18    constructor Create;
     19    destructor Destroy; override;
    1520  end;
    1621
     
    3742    FTabsPos: THeaderPos;
    3843    function FindControlInPanels(Control: TControl): TCDManagerItem; override;
    39     procedure InsertControlNoUpdate(AControl: TControl; InsertAt: TAlign);
     44    procedure InsertControlNoUpdate(Control: TControl; InsertAt: TAlign);
    4045    procedure RemoveControl(Control: TControl); override;
    4146  public
     
    5762  UCDClient;
    5863
     64{ TCDManagerTabsItem }
     65
     66constructor TCDManagerTabsItem.Create;
     67begin
     68  Icon := TImage.Create(nil);
     69end;
     70
     71destructor TCDManagerTabsItem.Destroy;
     72begin
     73  Icon.Free;
     74  inherited Destroy;
     75end;
     76
    5977{ TCDManagerTabs }
    6078
     
    91109  I: Integer;
    92110begin
    93   // Hide all clients
     111  UpdateClientSize;
     112{  // Hide all clients
    94113  for I := 0 to DockItems.Count - 1 do
    95114    if TCDManagerItem(DockItems[I]).Control.Visible
     
    137156  //TCDClientPanel(FDockPanels[TabControl.TabIndex]).Visible := True;
    138157  end;
    139   MouseDownSkip := True;
     158  MouseDownSkip := True;        }
    140159end;
    141160
     
    175194    Parent := ADockSite;
    176195    Name := Self.DockSite.Name + 'TabControl';
    177     Visible := False;
    178     Align := alTop;
     196    Visible := True;
     197    //Align := alTop;
    179198    //Height := 24;
    180199    Align := alClient;
     
    193212  //MoveDuration := 1000; // ms
    194213
    195   PageControl.Visible := True;
     214  //PageControl.Visible := True;
    196215  //TabImageList.Clear;
    197   for I := 0 to DockItems.Count - 1 do
    198     Self.InsertControlNoUpdate(TCDManagerItem(DockItems[I]).Control, alNone);
     216  for I := 0 to ADockSite.DockClientCount - 1 do
     217    InsertControlNoUpdate(ADockSite.DockClients[I], alNone);
    199218  TabControlChange(Self);
     219  //TCDManagerTabs(Self).TabControlChange(Self);
    200220end;
    201221
     
    221241end;
    222242
    223 procedure TCDManagerTabs.InsertControlNoUpdate(AControl: TControl; InsertAt: TAlign);
     243procedure TCDManagerTabs.InsertControlNoUpdate(Control: TControl; InsertAt: TAlign);
    224244var
    225245  NewTabSheet: TTabSheet;
    226   NewPanel: TCDManagerTabsItem;
     246  NewItem: TCDManagerTabsItem;
    227247begin
    228248  inherited;
    229249  begin
    230     NewPanel := TCDManagerTabsItem.Create;
    231     with NewPanel do begin
     250    NewItem := TCDManagerTabsItem.Create;
     251    with NewItem do begin
    232252      //Panel.Parent := Self.DockSite;
    233253      Manager := Self;
    234       if DockStyle = dsList then Visible := True;
     254      //if DockStyle = dsList then Visible := True;
    235255      //Align := alClient;
    236       Header.PopupMenu := Self.PopupMenu;
     256      //Header.PopupMenu := Self.PopupMenu;
    237257      //PopupMenu.Parent := Self.DockSite;
    238258    end;
    239     if (AControl is TForm) and Assigned((AControl as TForm).Icon) then
    240       NewPanel.Header.Icon.Picture.Assign((AControl as TForm).Icon);
    241 
    242     NewPanel.Control := AControl;
    243     AControl.AddHandlerOnVisibleChanged(NewPanel.VisibleChange);
    244     //AControl.Parent := NewPanel.ClientAreaPanel;
    245     AControl.Align := alClient;
     259    if (Control is TForm) and Assigned((Control as TForm).Icon) then
     260      NewItem.Icon.Picture.Assign((Control as TForm).Icon);
     261
     262    NewItem.Control := Control;
     263    Control.AddHandlerOnVisibleChanged(NewItem.VisibleChange);
     264    //AControl.Parent := NewItem.ClientAreaPanel;
     265    Control.Align := alClient;
    246266    if (InsertAt = alTop) or (InsertAt = alLeft) then
    247       DockItems.Insert(0, NewPanel)
    248       else DockItems.Add(NewPanel);
    249 
    250   end;
    251 
    252   if AControl.Visible then begin
     267      DockItems.Insert(0, NewItem)
     268      else DockItems.Add(NewItem);
     269
     270  end;
     271
    253272    NewTabSheet := TTabSheet.Create(PageControl);
    254273    NewTabSheet.PageControl := PageControl;
    255     NewTabSheet.Caption := AControl.Caption;
     274    NewTabSheet.Caption := Control.Caption;
    256275    NewTabSheet.ImageIndex := TabImageList.Count;
    257     TabImageList.Add(NewPanel.Header.Icon.Picture.Bitmap, nil);
    258 //    if Assigned(NewPanel.Splitter) then
    259 //      NewPanel.Splitter.Visible := False;
    260 //    NewPanel.ClientAreaPanel.Visible := False;
    261 //    NewPanel.Visible := False;
    262     //NewPanel.Parent := NewTabSheet;
    263   end;
     276    NewTabSheet.TabVisible := Control.Visible;
     277    Control.Parent := NewTabSheet;
     278    TabImageList.Add(NewItem.Icon.Picture.Bitmap, nil);
     279//    if Assigned(NewItem.Splitter) then
     280//      NewItem.Splitter.Visible := False;
     281//    NewItem.ClientAreaPanel.Visible := False;
     282//    NewItem.Visible := False;
     283    //NewItem.Parent := NewTabSheet;
    264284end;
    265285
     
    282302var
    283303  I: Integer;
     304  NewTabSheet: TTabSheet;
    284305begin
    285306  inherited UpdateClientSize;
    286   for I := 0 to DockItems.Count - 1 do begin
     307  for I := 0 to DockItems.Count - 1 do
     308  with TCDManagerTabsItem(DockItems[I]) do begin
     309    Control.Parent := PageControl.Pages[I];
     310    Control.Align := alClient;
     311
    287312    //TCDClientPanel(DockPanels[I]).ClientAreaPanel.Width := DockSite.Width;
    288313    //TCDClientPanel(DockPanels[I]).ClientAreaPanel.Height := DockSite.Height - PageControl.Height;
Note: See TracChangeset for help on using the changeset viewer.