Changeset 195 for Docking/CoolDocking/Managers
- Timestamp:
- Mar 11, 2011, 2:16:50 PM (14 years ago)
- Location:
- Docking/CoolDocking/Managers
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
Docking/CoolDocking/Managers/UCDManagerRegions.pas
r194 r195 15 15 16 16 TCDManagerRegionsItem = class(TCDManagerItem) 17 Panel : TPanel;17 PanelHeader: TCDPanelHeader; 18 18 Splitter: TSplitter; 19 ClientAreaPanel: TPanel;20 19 constructor Create; 20 destructor Destroy; override; 21 21 end; 22 22 … … 31 31 //Panels: TObjectList; // TObjectList<TCDStyleRegionsPanel> 32 32 function FindControlInPanels(Control: TControl): TCDManagerItem; override; 33 procedure InsertControlNoUpdate(Control: TControl; InsertAt: TAlign); 33 34 procedure InsertControlPanel(Control: TControl; InsertAt: TAlign; 34 35 DropCtl: TControl); override; … … 54 55 constructor TCDManagerRegionsItem.Create; 55 56 begin 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); 70 61 with Splitter do begin 71 Parent := Panel;62 //Parent := Panel; 72 63 //Color := clRed; 73 64 end; 65 end; 66 67 destructor TCDManagerRegionsItem.Destroy; 68 begin 69 inherited Destroy; 74 70 end; 75 71 … … 100 96 end; 101 97 98 procedure TCDManagerRegions.InsertControlNoUpdate(Control: TControl; 99 InsertAt: TAlign); 100 var 101 NewItem: TCDManagerRegionsItem; 102 begin 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 102 123 procedure TCDManagerRegions.InsertControlPanel(Control: TControl; InsertAt: TAlign; 103 124 DropCtl: TControl); 104 125 var 105 New Panel: TCDManagerRegionsItem;126 NewItem: TCDManagerRegionsItem; 106 127 I: Integer; 107 128 NewDirection: TCDDirection; … … 131 152 end; 132 153 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); 152 155 end; 153 156 UpdateClientSize; … … 156 159 procedure TCDManagerRegions.RemoveControl(Control: TControl); 157 160 var 158 ClientPanel: TCDManagerItem;161 ManagerItem: TCDManagerItem; 159 162 ClientCount: Integer; 160 163 begin 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); 165 169 ClientCount := DockItems.Count; 166 170 … … 184 188 var 185 189 I: Integer; 190 NewItem: TCDManagerRegionsItem; 186 191 begin 187 192 inherited; … … 189 194 FDockItems := TObjectList.Create; 190 195 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; 201 199 end; 202 200 … … 214 212 for I := 0 to FDockItems.Count - 1 do 215 213 with TCDManagerRegionsItem(FDockItems[I]) do begin 216 Panel .Invalidate;214 PanelHeader.Invalidate; 217 215 end; 218 216 end; … … 233 231 for I := 0 to DockItems.Count - 1 do 234 232 with TCDManagerRegionsItem(DockItems[I]) do begin 235 Panel .Left := SplitterLeft;236 Panel .Top := SplitterTop;237 Panel .Height := Self.DockSite.Height div233 PanelHeader.Left := SplitterLeft; 234 PanelHeader.Top := SplitterTop; 235 PanelHeader.Height := Self.DockSite.Height div 238 236 Self.DockSite.DockClientCount; 239 Panel .Width := Self.DockSite.Width div237 PanelHeader.Width := Self.DockSite.Width div 240 238 Self.DockSite.DockClientCount; 241 239 //TCDClientPanel(FDockPanels[I]).DockPanelPaint(Self); 242 if I < (DockItems.Count - 1) then Panel .Align := BaseAlign243 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); 247 245 Splitter.Left := SplitterLeft; 248 246 Splitter.Top := SplitterTop; … … 255 253 Paint(Self); 256 254 if I < (DockItems.Count - 1) then begin 257 if DockDirection = ddHorizontal then Panel .Align := alLeft258 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; 260 258 end; 261 259 end; -
Docking/CoolDocking/Managers/UCDManagerTabs.pas
r194 r195 11 11 12 12 type 13 TCDManagerTabsITem = class(TCDManagerItem) 14 13 14 { TCDManagerTabsItem } 15 16 TCDManagerTabsItem = class(TCDManagerItem) 17 Icon: TImage; 18 constructor Create; 19 destructor Destroy; override; 15 20 end; 16 21 … … 37 42 FTabsPos: THeaderPos; 38 43 function FindControlInPanels(Control: TControl): TCDManagerItem; override; 39 procedure InsertControlNoUpdate( AControl: TControl; InsertAt: TAlign);44 procedure InsertControlNoUpdate(Control: TControl; InsertAt: TAlign); 40 45 procedure RemoveControl(Control: TControl); override; 41 46 public … … 57 62 UCDClient; 58 63 64 { TCDManagerTabsItem } 65 66 constructor TCDManagerTabsItem.Create; 67 begin 68 Icon := TImage.Create(nil); 69 end; 70 71 destructor TCDManagerTabsItem.Destroy; 72 begin 73 Icon.Free; 74 inherited Destroy; 75 end; 76 59 77 { TCDManagerTabs } 60 78 … … 91 109 I: Integer; 92 110 begin 93 // Hide all clients 111 UpdateClientSize; 112 { // Hide all clients 94 113 for I := 0 to DockItems.Count - 1 do 95 114 if TCDManagerItem(DockItems[I]).Control.Visible … … 137 156 //TCDClientPanel(FDockPanels[TabControl.TabIndex]).Visible := True; 138 157 end; 139 MouseDownSkip := True; 158 MouseDownSkip := True; } 140 159 end; 141 160 … … 175 194 Parent := ADockSite; 176 195 Name := Self.DockSite.Name + 'TabControl'; 177 Visible := False;178 Align := alTop;196 Visible := True; 197 //Align := alTop; 179 198 //Height := 24; 180 199 Align := alClient; … … 193 212 //MoveDuration := 1000; // ms 194 213 195 PageControl.Visible := True;214 //PageControl.Visible := True; 196 215 //TabImageList.Clear; 197 for I := 0 to DockItems.Count - 1 do198 Self.InsertControlNoUpdate(TCDManagerItem(DockItems[I]).Control, alNone);216 for I := 0 to ADockSite.DockClientCount - 1 do 217 InsertControlNoUpdate(ADockSite.DockClients[I], alNone); 199 218 TabControlChange(Self); 219 //TCDManagerTabs(Self).TabControlChange(Self); 200 220 end; 201 221 … … 221 241 end; 222 242 223 procedure TCDManagerTabs.InsertControlNoUpdate( AControl: TControl; InsertAt: TAlign);243 procedure TCDManagerTabs.InsertControlNoUpdate(Control: TControl; InsertAt: TAlign); 224 244 var 225 245 NewTabSheet: TTabSheet; 226 New Panel: TCDManagerTabsItem;246 NewItem: TCDManagerTabsItem; 227 247 begin 228 248 inherited; 229 249 begin 230 New Panel:= TCDManagerTabsItem.Create;231 with New Paneldo begin250 NewItem := TCDManagerTabsItem.Create; 251 with NewItem do begin 232 252 //Panel.Parent := Self.DockSite; 233 253 Manager := Self; 234 if DockStyle = dsList then Visible := True;254 //if DockStyle = dsList then Visible := True; 235 255 //Align := alClient; 236 Header.PopupMenu := Self.PopupMenu;256 //Header.PopupMenu := Self.PopupMenu; 237 257 //PopupMenu.Parent := Self.DockSite; 238 258 end; 239 if ( AControl is TForm) and Assigned((AControl as TForm).Icon) then240 New Panel.Header.Icon.Picture.Assign((AControl as TForm).Icon);241 242 New Panel.Control := AControl;243 AControl.AddHandlerOnVisibleChanged(NewPanel.VisibleChange);244 //AControl.Parent := New Panel.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; 246 266 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 253 272 NewTabSheet := TTabSheet.Create(PageControl); 254 273 NewTabSheet.PageControl := PageControl; 255 NewTabSheet.Caption := AControl.Caption;274 NewTabSheet.Caption := Control.Caption; 256 275 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; 264 284 end; 265 285 … … 282 302 var 283 303 I: Integer; 304 NewTabSheet: TTabSheet; 284 305 begin 285 306 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 287 312 //TCDClientPanel(DockPanels[I]).ClientAreaPanel.Width := DockSite.Width; 288 313 //TCDClientPanel(DockPanels[I]).ClientAreaPanel.Height := DockSite.Height - PageControl.Height;
Note:
See TracChangeset
for help on using the changeset viewer.