Ignore:
Timestamp:
Mar 16, 2011, 12:32:41 PM (13 years ago)
Author:
george
Message:
  • Fixed: Popup submenus style and position item selection.
  • Added: Locking dock managers.
  • Modified: Enhanced auto popup tabs handling. Not yet finished.
  • Modified: Dock manager position united for all dock manager descendands.
File:
1 edited

Legend:

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

    r195 r198  
    1616  TCDManagerTabsItem = class(TCDManagerItem)
    1717    Icon: TImage;
    18     constructor Create;
     18    constructor Create; override;
    1919    destructor Destroy; override;
    2020  end;
     
    2323
    2424  TCDManagerTabs = class(TCDManager)
    25   public
     25  private
    2626    MouseDown: Boolean;
    2727    MouseButton: TMouseButton;
    2828    MouseDownSkip: Boolean;
    29     PageControl: TPageControl;
    30     TabImageList: TImageList;
    3129    FDockItems: TObjectList; // TList<TCDManagerRegionsItem>
    3230    procedure TabControlMouseLeave(Sender: TObject);
    33     procedure TabControlChange(Sender: TObject);
    3431    procedure TabControlMouseDown(Sender: TObject; Button: TMouseButton;
    3532      Shift: TShiftState; X, Y: Integer);
     
    3936      DropCtl: TControl); override;
    4037    procedure UpdateClientSize; override;
    41   private
    42     FTabsPos: THeaderPos;
    4338    function FindControlInPanels(Control: TControl): TCDManagerItem; override;
    44     procedure InsertControlNoUpdate(Control: TControl; InsertAt: TAlign);
    4539    procedure RemoveControl(Control: TControl); override;
     40    function GetHeaderPos: THeaderPos; override;
     41    procedure SetHeaderPos(const AValue: THeaderPos); override;
    4642  public
    47     constructor Create(ADockSite: TWinControl);
     43    TabImageList: TImageList;
     44    PageControl: TPageControl;
     45    procedure InsertControlNoUpdate(Control: TControl; InsertAt: TAlign); virtual;
     46    procedure TabControlChange(Sender: TObject); virtual;
     47    constructor Create(ADockSite: TWinControl); override;
    4848    destructor Destroy; override;
    4949    procedure PaintSite(DC: HDC); override;
     
    5151    procedure ChangeVisible(Control: TWinControl; Visible: Boolean); override;
    5252    procedure Switch(Index: Integer); override;
    53     procedure SetTabsPos(const AValue: THeaderPos);
    5453    procedure PopupMenuTabCloseClick(Sender: TObject);
    55     property TabsPos: THeaderPos read FTabsPos write SetTabsPos;
    5654    property DockItems: TObjectList read FDockItems write FDockItems;
    5755  end;
     
    9896begin
    9997  if MouseDown then
    100   if Assigned(PageControl.ActivePage) then begin
     98  if Assigned(PageControl.ActivePage) and not Locked then begin
    10199    //TCDManagerItem(DockItems[PageControl.TabIndex]).ClientAreaPanel.DockSite := False;
    102100    DragManager.DragStart(TCDManagerItem(DockItems[PageControl.TabIndex]).Control, False, 1);
     
    188186  TabImageList := TImageList.Create(ADockSite); //FDockSite);
    189187  with TabImageList do begin
    190     Name := DockSite.Name + 'ImageList';
     188    Name := GetUniqueName(DockSite.Name + 'ImageList');
    191189  end;
    192190  PageControl := TPageControl.Create(ADockSite); //FDockSite);
    193191  with PageControl do begin
    194192    Parent := ADockSite;
    195     Name := Self.DockSite.Name + 'TabControl';
     193    Name := GetUniqueName(Self.DockSite.Name + 'TabControl');
    196194    Visible := True;
    197195    //Align := alTop;
     
    216214  for I := 0 to ADockSite.DockClientCount - 1 do
    217215    InsertControlNoUpdate(ADockSite.DockClients[I], alNone);
    218   TabControlChange(Self);
     216  //TabControlChange(Self);
    219217  //TCDManagerTabs(Self).TabControlChange(Self);
    220218end;
     
    287285begin
    288286  inherited RemoveControl(Control);
     287end;
     288
     289function TCDManagerTabs.GetHeaderPos: THeaderPos;
     290begin
     291  Result := inherited;
     292end;
     293
     294procedure TCDManagerTabs.SetHeaderPos(const AValue: THeaderPos);
     295begin
     296  inherited SetHeaderPos(AValue);
     297  with PageControl do
     298  case AValue of
     299    hpAuto, hpTop: begin
     300      //Align := alTop;
     301      TabPosition := tpTop;
     302      Height := GrabberSize;
     303    end;
     304    hpLeft: begin
     305      //Align := alLeft;
     306      TabPosition := tpLeft;
     307      Width := GrabberSize;
     308    end;
     309    hpRight: begin
     310      //Align := alRight;
     311      TabPosition := tpRight;
     312      Width := GrabberSize;
     313    end;
     314    hpBottom: begin
     315      //Align := alBottom;
     316      TabPosition := tpBottom;
     317      Height := GrabberSize;
     318    end;
     319  end;
    289320end;
    290321
     
    376407end;
    377408
    378 procedure TCDManagerTabs.SetTabsPos(const AValue: THeaderPos);
    379 begin
    380   if FTabsPos = AValue then Exit;
    381   FTabsPos := AValue;
    382   with PageControl do
    383   case AValue of
    384     hpAuto, hpTop: begin
    385       Align := alTop;
    386       TabPosition := tpTop;
    387       Height := GrabberSize;
    388     end;
    389     hpLeft: begin
    390       Align := alLeft;
    391       TabPosition := tpLeft;
    392       Width := GrabberSize;
    393     end;
    394     hpRight: begin
    395       Align := alRight;
    396       TabPosition := tpRight;
    397       Width := GrabberSize;
    398     end;
    399     hpBottom: begin
    400       Align := alBottom;
    401       TabPosition := tpBottom;
    402       Height := GrabberSize;
    403     end;
    404   end;
    405 end;
    406 
    407 
    408409end.
    409410
Note: See TracChangeset for help on using the changeset viewer.