Ignore:
Timestamp:
Mar 11, 2011, 1:00:06 PM (13 years ago)
Author:
george
Message:
  • Removed: UCDClientPanel replaced by TCDManagerItem and it's descendend.
File:
1 edited

Legend:

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

    r193 r194  
    66
    77uses
    8   Classes, Controls, ExtCtrls, ComCtrls, SysUtils, Dialogs,
    9   Menus, Forms, UCDClientPanel, UCDCommon, UCDManager;
     8  Classes, Controls, ExtCtrls, ComCtrls, SysUtils, Dialogs, Contnrs,
     9  Menus, Forms, UCDCommon, UCDManager,
     10  LCLType, LMessages, Graphics;
    1011
    1112type
     13  TCDManagerTabsITem = class(TCDManagerItem)
     14
     15  end;
    1216
    1317  { TCDManagerTabs }
     
    2024    PageControl: TPageControl;
    2125    TabImageList: TImageList;
     26    FDockItems: TObjectList; // TList<TCDManagerRegionsItem>
    2227    procedure TabControlMouseLeave(Sender: TObject);
    2328    procedure TabControlChange(Sender: TObject);
     
    3136  private
    3237    FTabsPos: THeaderPos;
     38    function FindControlInPanels(Control: TControl): TCDManagerItem; override;
    3339    procedure InsertControlNoUpdate(AControl: TControl; InsertAt: TAlign);
    3440    procedure RemoveControl(Control: TControl); override;
    3541  public
    3642    constructor Create(ADockSite: TWinControl);
     43    destructor Destroy; override;
     44    procedure PaintSite(DC: HDC); override;
    3745    procedure DoSetVisible(const AValue: Boolean); override;
    38     destructor Destroy; override;
    3946    procedure ChangeVisible(Control: TWinControl; Visible: Boolean); override;
    4047    procedure Switch(Index: Integer); override;
     
    4249    procedure PopupMenuTabCloseClick(Sender: TObject);
    4350    property TabsPos: THeaderPos read FTabsPos write SetTabsPos;
     51    property DockItems: TObjectList read FDockItems write FDockItems;
    4452  end;
    4553
     
    5159{ TCDManagerTabs }
    5260
     61function TCDManagerTabs.FindControlInPanels(Control: TControl
     62  ): TCDManagerItem;
     63var
     64  I: Integer;
     65begin
     66  I := 0;
     67  while (I < FDockItems.Count) and
     68    (TCDManagerItem(FDockItems[I]).Control <> Control) do Inc(I);
     69  if I < FDockItems.Count then Result := TCDManagerItem(FDockItems[I])
     70    else Result := nil;
     71end;
     72
    5373procedure TCDManagerTabs.PopupMenuTabCloseClick(Sender: TObject);
    5474begin
    5575  if Assigned(PageControl.ActivePage) then
    56     TCDClientPanel(DockPanels[PageControl.TabIndex]).Control.Hide;
     76    TCDManagerItem(DockItems[PageControl.TabIndex]).Control.Hide;
    5777end;
    5878
     
    6181  if MouseDown then
    6282  if Assigned(PageControl.ActivePage) then begin
    63     TCDClientPanel(DockPanels[PageControl.TabIndex]).ClientAreaPanel.DockSite := False;
    64     DragManager.DragStart(TCDClientPanel(DockPanels[PageControl.TabIndex]).Control, False, 1);
     83    //TCDManagerItem(DockItems[PageControl.TabIndex]).ClientAreaPanel.DockSite := False;
     84    DragManager.DragStart(TCDManagerItem(DockItems[PageControl.TabIndex]).Control, False, 1);
    6585  end;
    6686  MouseDown := False;
     
    7292begin
    7393  // Hide all clients
    74   for I := 0 to DockPanels.Count - 1 do
    75     if TCDClientPanel(DockPanels[I]).Control.Visible
     94  for I := 0 to DockItems.Count - 1 do
     95    if TCDManagerItem(DockItems[I]).Control.Visible
    7696    //and (PageControl.TabIndex <> I)
    7797    then
    7898    begin
    79       TCDClientPanel(DockPanels[I]).Control.Tag := Integer(dhtTemporal);
    80       TCDClientPanel(DockPanels[I]).Control.Hide;
    81       TCDClientPanel(DockPanels[I]).ClientAreaPanel.Hide;
    82       TCDClientPanel(DockPanels[I]).ClientAreaPanel.Parent := PageControl.Pages[I];
     99      TCDManagerItem(DockItems[I]).Control.Tag := Integer(dhtTemporal);
     100      TCDManagerItem(DockItems[I]).Control.Hide;
     101      //TCDClientPanel(DockItems[I]).ClientAreaPanel.Hide;
     102      //TCDClientPanel(DockItems[I]).ClientAreaPanel.Parent := PageControl.Pages[I];
    83103      //TCDClientPanel(DockPanels[I]).ClientAreaPanel.Parent := DockSite;
    84       TCDClientPanel(DockPanels[I]).Control.Align := alClient;
     104      TCDManagerItem(DockItems[I]).Control.Align := alClient;
    85105      //TCDClientPanel(DockPanels[I]).Control.Parent :=
    86106      //  TCDClientPanel(DockPanels[I]).ClientAreaPanel;
    87107      //ShowMessage(TCDClientPanel(DockPanels[I]).Control.ClassName);
    88       Application.ProcessMessages;
     108      //Application.ProcessMessages;
    89109
    90110      // Workaround for "Cannot focus" error
    91       TForm(TCDClientPanel(DockPanels[I]).Control).ActiveControl := nil;
     111      TForm(TCDManagerItem(DockItems[I]).Control).ActiveControl := nil;
    92112    end;
    93113
    94114  // Show selected
    95   if (PageControl.TabIndex <> -1) and (DockPanels.Count > PageControl.TabIndex)
     115  if (PageControl.TabIndex <> -1) and (DockItems.Count > PageControl.TabIndex)
    96116//  and not TCDClientPanel(DockPanels[PageControl.TabIndex]).Control.Visible
    97117  then begin
    98     with TCDClientPanel(DockPanels[PageControl.TabIndex]), ClientAreaPanel do begin
     118    with TCDManagerItem(DockItems[PageControl.TabIndex]) do begin
    99119      Control.Show;
    100120      (*AutoHide.Enable := True;
     
    145165  inherited;
    146166  FDockStyle := dsTabs;
     167  FDockItems := TObjectList.Create;
     168
    147169  TabImageList := TImageList.Create(ADockSite); //FDockSite);
    148170  with TabImageList do begin
     
    173195  PageControl.Visible := True;
    174196  //TabImageList.Clear;
    175   for I := 0 to DockPanels.Count - 1 do
    176     Self.InsertControlNoUpdate(TCDClientPanel(DockPanels[I]).Control, alNone);
     197  for I := 0 to DockItems.Count - 1 do
     198    Self.InsertControlNoUpdate(TCDManagerItem(DockItems[I]).Control, alNone);
    177199  TabControlChange(Self);
    178200end;
     
    180202destructor TCDManagerTabs.Destroy;
    181203begin
     204  FDockItems.Free;
    182205  PageControl.Free;
    183206  TabImageList.Free;
     
    185208end;
    186209
     210procedure TCDManagerTabs.PaintSite(DC: HDC);
     211var
     212  I: Integer;
     213begin
     214  inherited PaintSite(DC);
     215  PageControl.Invalidate;
     216end;
     217
    187218procedure TCDManagerTabs.Switch(Index: Integer);
    188219begin
     
    193224var
    194225  NewTabSheet: TTabSheet;
    195   NewPanel: TCDClientPanel;
     226  NewPanel: TCDManagerTabsItem;
    196227begin
    197228  inherited;
    198229  begin
    199     NewPanel := TCDClientPanel.Create(nil);
     230    NewPanel := TCDManagerTabsItem.Create;
    200231    with NewPanel do begin
    201       Parent := Self.DockSite;
    202       OwnerDockManager := Self;
     232      //Panel.Parent := Self.DockSite;
     233      Manager := Self;
    203234      if DockStyle = dsList then Visible := True;
    204       Align := alClient;
     235      //Align := alClient;
    205236      Header.PopupMenu := Self.PopupMenu;
    206237      //PopupMenu.Parent := Self.DockSite;
     
    211242    NewPanel.Control := AControl;
    212243    AControl.AddHandlerOnVisibleChanged(NewPanel.VisibleChange);
    213     AControl.Parent := NewPanel.ClientAreaPanel;
     244    //AControl.Parent := NewPanel.ClientAreaPanel;
    214245    AControl.Align := alClient;
    215246    if (InsertAt = alTop) or (InsertAt = alLeft) then
    216       DockPanels.Insert(0, NewPanel)
    217       else DockPanels.Add(NewPanel);
     247      DockItems.Insert(0, NewPanel)
     248      else DockItems.Add(NewPanel);
    218249
    219250  end;
     
    225256    NewTabSheet.ImageIndex := TabImageList.Count;
    226257    TabImageList.Add(NewPanel.Header.Icon.Picture.Bitmap, nil);
    227     if Assigned(NewPanel.Splitter) then
    228       NewPanel.Splitter.Visible := False;
    229     NewPanel.ClientAreaPanel.Visible := False;
    230     NewPanel.Visible := False;
     258//    if Assigned(NewPanel.Splitter) then
     259//      NewPanel.Splitter.Visible := False;
     260//    NewPanel.ClientAreaPanel.Visible := False;
     261//    NewPanel.Visible := False;
    231262    //NewPanel.Parent := NewTabSheet;
    232263  end;
     
    253284begin
    254285  inherited UpdateClientSize;
    255   for I := 0 to DockPanels.Count - 1 do begin
     286  for I := 0 to DockItems.Count - 1 do begin
    256287    //TCDClientPanel(DockPanels[I]).ClientAreaPanel.Width := DockSite.Width;
    257288    //TCDClientPanel(DockPanels[I]).ClientAreaPanel.Height := DockSite.Height - PageControl.Height;
     
    263294begin
    264295  inherited;
    265     if (PageControl.TabIndex >= 0) and (PageControl.TabIndex < DockPanels.Count) then
    266       with TCDClientPanel(DockPanels[PageControl.TabIndex]) do begin
     296    if (PageControl.TabIndex >= 0) and (PageControl.TabIndex < DockItems.Count) then
     297      with TCDManagerItem(DockItems[PageControl.TabIndex]) do begin
    267298        //Show;
    268299        //ShowMessage(IntToStr(Control.Tag));
     
    294325        //TabImageList.Delete(PageControl.Tabs.IndexOf(Control.Caption));
    295326
    296         I := DockPanels.IndexOf(FindControlInPanels(Control));
     327        I := DockItems.IndexOf(FindControlInPanels(Control));
    297328        if Control.Tag = Integer(dhtPermanent) then
    298329        if I <> -1 then
     
    308339    begin
    309340//      if Control.Tag = 0 then begin
    310         I := DockPanels.IndexOf(FindControlInPanels(Control));
     341        I := DockItems.IndexOf(FindControlInPanels(Control));
    311342        //if  then
    312343        if I <> -1 then
Note: See TracChangeset for help on using the changeset viewer.