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/UCDManagerRegions.pas

    r193 r194  
    77uses
    88  Classes, SysUtils, Controls, ExtCtrls, StdCtrls, Forms,
    9   Graphics, Contnrs, Buttons, UCDClientPanel, UCDCommon, UCDManager;
     9  Graphics, Contnrs, Buttons, UCDCommon, UCDManager,
     10  LCLType, LMessages;
    1011
    1112type
    12   TCDStyleRegionsPanel = class(TPanel)
    13 
     13
     14  { TCDManagerRegionsItem }
     15
     16  TCDManagerRegionsItem = class(TCDManagerItem)
     17    Panel: TPanel;
     18    Splitter: TSplitter;
     19    ClientAreaPanel: TPanel;
     20    constructor Create;
    1421  end;
    1522
     
    1825  TCDManagerRegions = class(TCDManager)
    1926  private
     27    FDockItems: TObjectList; // TList<TCDManagerRegionsItem>
    2028    function GetDirection(InsertAt: TAlign): TCDDirection;
    2129  public
    2230    FDockDirection: TCDDirection;
    2331    //Panels: TObjectList; // TObjectList<TCDStyleRegionsPanel>
     32    function FindControlInPanels(Control: TControl): TCDManagerItem; override;
    2433    procedure InsertControlPanel(Control: TControl; InsertAt: TAlign;
    2534      DropCtl: TControl); override;
     
    2736    constructor Create(ADockSite: TWinControl);
    2837    destructor Destroy; override;
     38    procedure PaintSite(DC: HDC); override;
    2939    procedure UpdateClientSize; override;
    3040    procedure DoSetVisible(const AValue: Boolean); override;
     
    3242    property DockDirection: TCDDirection read FDockDirection
    3343      write FDockDirection;
     44    property DockItems: TObjectList read FDockItems write FDockItems;
    3445  end;
    3546
     
    3849uses
    3950  UCDClient, UCDConjoinForm;
     51
     52{ TCDManagerRegionsItem }
     53
     54constructor TCDManagerRegionsItem.Create;
     55begin
     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);
     70  with Splitter do begin
     71    Parent := Panel;
     72    //Color := clRed;
     73  end;
     74end;
    4075
    4176
     
    5388end;
    5489
     90function TCDManagerRegions.FindControlInPanels(Control: TControl
     91  ): TCDManagerItem;
     92var
     93  I: Integer;
     94begin
     95  I := 0;
     96  while (I < FDockItems.Count) and
     97    (TCDManagerItem(FDockItems[I]).Control <> Control) do Inc(I);
     98  if I < FDockItems.Count then Result := TCDManagerItem(FDockItems[I])
     99    else Result := nil;
     100end;
     101
    55102procedure TCDManagerRegions.InsertControlPanel(Control: TControl; InsertAt: TAlign;
    56103  DropCtl: TControl);
    57104var
    58   NewPanel: TCDClientPanel;
     105  NewPanel: TCDManagerRegionsItem;
    59106  I: Integer;
    60107  NewDirection: TCDDirection;
     
    85132    end;
    86133
    87     NewPanel := TCDClientPanel.Create(nil);
     134    NewPanel := TCDManagerRegionsItem.Create;
    88135    with NewPanel do begin
    89       Parent := Self.DockSite;
    90       OwnerDockManager := Self;
     136      Panel.Parent := Self.DockSite;
     137      Manager := Self;
    91138      if DockStyle = dsList then Visible := True;
    92139      Header.PopupMenu := Self.PopupMenu;
     
    101148    Control.Align := alClient;
    102149    if (InsertAt = alTop) or (InsertAt = alLeft) then
    103       DockPanels.Insert(0, NewPanel)
    104       else DockPanels.Add(NewPanel);
     150      DockItems.Insert(0, NewPanel)
     151      else DockItems.Add(NewPanel);
    105152  end;
    106153  UpdateClientSize;
     
    109156procedure TCDManagerRegions.RemoveControl(Control: TControl);
    110157var
    111   ClientPanel: TCDClientPanel;
     158  ClientPanel: TCDManagerItem;
    112159  ClientCount: Integer;
    113160begin
     
    115162  Control.RemoveHandlerOnVisibleChanged(ClientPanel.VisibleChange);
    116163
    117   DockPanels.Remove(ClientPanel);
    118   ClientCount := DockPanels.Count;
     164  DockItems.Remove(ClientPanel);
     165  ClientCount := DockItems.Count;
    119166
    120167  //if TCDManager(Manager).DockSite.DockClientCount = 2 then FDockDirection := ddNone;
     
    124171    with TCDConjoinForm(Self.DockSite) do begin
    125172      if Assigned(Parent) then begin
    126         TCDClientPanel(DockPanels[0]).Control.ManualDock(HostDockSite);
    127       end else TCDClientPanel(DockPanels[0]).Control.ManualFloat(Rect(Left, Top, Left + Width, Top + Height));
     173        TCDManagerItem(DockItems[0]).Control.ManualDock(HostDockSite);
     174      end else TCDManagerItem(DockItems[0]).Control.ManualFloat(Rect(Left, Top, Left + Width, Top + Height));
    128175      ManualFloat(Rect(Left, Top, Left + Width, Top + Height));
    129176      Free;
     
    140187  inherited;
    141188  FDockStyle := dsList;
    142   //Panels := TObjectList.Create;
    143 
    144   for I := 0 to DockPanels.Count - 1 do begin
    145     if Assigned(TCDClientPanel(DockPanels[I]).Splitter) then
    146       TCDClientPanel(DockPanels[I]).Splitter.Visible := True;
    147     TCDClientPanel(DockPanels[I]).Visible := True;
    148     TCDClientPanel(DockPanels[I]).ClientAreaPanel.Parent := TCDClientPanel(DockPanels[I]);
    149     TCDClientPanel(DockPanels[I]).ClientAreaPanel.Visible := True;
    150     TCDClientPanel(DockPanels[I]).Control.Visible := True;
     189  FDockItems := TObjectList.Create;
     190
     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;
    151200  end;
    152201end;
     
    154203destructor TCDManagerRegions.Destroy;
    155204begin
    156   //Panels.Free;
     205  FDockItems.Free;
    157206  inherited Destroy;
     207end;
     208
     209procedure TCDManagerRegions.PaintSite(DC: HDC);
     210var
     211  I: Integer;
     212begin
     213  inherited PaintSite(DC);
     214  for I := 0 to FDockItems.Count - 1 do
     215    with TCDManagerRegionsItem(FDockItems[I]) do begin
     216      Panel.Invalidate;
     217    end;
    158218end;
    159219
     
    171231  SplitterLeft := 0;
    172232  SplitterTop := 0;
    173   for I := 0 to DockPanels.Count - 1 do
    174   with TCDClientPanel(DockPanels[I]) do begin
    175     Left := SplitterLeft;
    176     Top := SplitterTop;
    177     Height := Self.DockSite.Height div
     233  for I := 0 to DockItems.Count - 1 do
     234  with TCDManagerRegionsItem(DockItems[I]) do begin
     235    Panel.Left := SplitterLeft;
     236    Panel.Top := SplitterTop;
     237    Panel.Height := Self.DockSite.Height div
    178238      Self.DockSite.DockClientCount;
    179     Width := Self.DockSite.Width div
    180       SElf.DockSite.DockClientCount;
     239    Panel.Width := Self.DockSite.Width div
     240      Self.DockSite.DockClientCount;
    181241    //TCDClientPanel(FDockPanels[I]).DockPanelPaint(Self);
    182     if I < (DockPanels.Count - 1) then Align := BaseAlign
    183       else Align := alClient;
    184 
    185     Inc(SplitterLeft, Width);
    186     Inc(SplitterTop, Height);
     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);
    187247    Splitter.Left := SplitterLeft;
    188248    Splitter.Top := SplitterTop;
    189     Splitter.Parent := SElf.DockSite;
     249    Splitter.Parent := Self.DockSite;
    190250    Splitter.Align := BaseAlign;
    191     Splitter.Visible := I < (DockPanels.Count - 1);
     251    Splitter.Visible := I < (DockItems.Count - 1);
    192252    Inc(SplitterLeft, Splitter.Width);
    193253    Inc(SplitterTop, Splitter.Height);
    194254
    195     DockPanelPaint(Self);
    196     if I < (DockPanels.Count - 1) then begin
    197       if DockDirection = ddHorizontal then Align := alLeft
    198         else Align := alTop;
    199     end else Align := alClient;
     255    Paint(Self);
     256    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;
    200260  end;
    201261end;
     
    206266begin
    207267  inherited;
    208   for I := 0 to DockPanels.Count - 1 do
     268  for I := 0 to DockItems.Count - 1 do
    209269
    210270        //Show;
    211271        //ShowMessage(IntToStr(Control.Tag));
    212       with TCDClientPanel(DockPanels[I]) do begin
     272      with TCDManagerRegionsItem(DockItems[I]) do begin
    213273        if AValue and (not Control.Visible) and (Control.Tag = Integer(dhtTemporal))  then begin
    214274          Control.Show;
Note: See TracChangeset for help on using the changeset viewer.