Changeset 103 for Docking/CoolDocking/UCoolDocking.pas
- Timestamp:
- Dec 29, 2010, 1:56:04 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Docking/CoolDocking/UCoolDocking.pas
r98 r103 32 32 CoolDockClient: TCoolDockClient; 33 33 procedure FormShow(Sender : TObject); 34 procedure FormHide(Sender : TObject); 34 35 constructor Create(TheOwner: TComponent); override; 36 destructor Destroy; override; 37 private 38 procedure PanelVisibleChange(Sender: TObject); 35 39 end; 36 40 37 41 TDockStyle = (dsList, dsTabs, dsPopupTabs, dsPopupList); 42 43 // TObjectList<TCoolDockClientPanel> 44 45 { TCoolDockPanels } 46 47 TCoolDockPanels = class(TObjectList) 48 destructor Destroy; override; 49 end; 38 50 39 51 { TCoolDockManager } … … 42 54 private 43 55 FMaster: TCoolDockMaster; 44 DockStyleHandler: TCoolDockStyle;45 56 FDockStyle: TDockStyle; 46 57 FDockDirection: TDockDirection; 47 58 FDockSite: TWinControl; 48 FDockPanels: TObjectList; // TObjectList<TCoolDockClientPanel> 49 function FindControlInPanels(Control: TControl): TCoolDockClientPanel; 59 FDockPanels: TCoolDockPanels; 50 60 function GetDockSite: TWinControl; 61 function GetHeaderPos: THeaderPos; 51 62 function GetMoveDuration: Integer; 52 63 procedure InsertControlPanel(Control: TControl; InsertAt: TAlign; 53 64 DropCtl: TControl); 54 65 procedure SetDockStyle(const AValue: TDockStyle); 66 procedure SetHeaderPos(const AValue: THeaderPos); 55 67 procedure SetMaster(const AValue: TCoolDockMaster); 56 68 procedure SetMoveDuration(const AValue: Integer); 69 procedure SetVisible(const AValue: Boolean); 57 70 procedure UpdateClientSize; 58 71 public 72 DockStyleHandler: TCoolDockStyle; 59 73 PopupMenu: TCoolDockPopupMenu; 60 74 constructor Create(ADockSite: TWinControl); override; … … 82 96 function AutoFreeByControl: Boolean; override; 83 97 98 function FindControlInPanels(Control: TControl): TCoolDockClientPanel; 84 99 function CreateContainer(InsertAt: TAlign): TCoolDockConjoinForm; 85 property DockPanels: T ObjectListread FDockPanels write FDockPanels;100 property DockPanels: TCoolDockPanels read FDockPanels write FDockPanels; 86 101 property DockStyle: TDockStyle read FDockStyle write SetDockStyle; 87 102 property MoveDuration: Integer read GetMoveDuration write SetMoveDuration; 88 103 property Master: TCoolDockMaster read FMaster write SetMaster; 89 104 property DockSite: TWinControl read GetDockSite; 105 property HeaderPos: THeaderPos read GetHeaderPos write SetHeaderPos; 106 property Visible: Boolean write SetVisible; 90 107 end; 91 108 … … 194 211 end; 195 212 213 { TCoolDockPanels } 214 215 destructor TCoolDockPanels.Destroy; 216 var 217 Temp: Integer; 218 begin 219 Temp := Count; 220 inherited Destroy; 221 end; 222 196 223 197 224 { TCoolDockManager } … … 214 241 end; 215 242 243 function TCoolDockManager.GetHeaderPos: THeaderPos; 244 begin 245 246 end; 247 216 248 function TCoolDockManager.GetMoveDuration: Integer; 217 249 begin … … 226 258 inherited Create(ADockSite); 227 259 FDockSite := ADockSite; 228 FDockPanels := T ObjectList.Create;260 FDockPanels := TCoolDockPanels.Create; 229 261 230 262 FDockStyle := dsTabs; // To initialize style value have to be different 231 263 DockStyle := dsList; 232 264 PopupMenu := TCoolDockPopupMenu.Create(Self); 265 PopupMenu.Parent := ADockSite; 233 266 end; 234 267 … … 236 269 begin 237 270 PopupMenu.Free; 271 DockStyleHandler.Free; 238 272 FDockPanels.Free; 239 DockStyleHandler.Free;240 273 inherited Destroy; 241 274 end; … … 309 342 if DockStyle = dsList then Visible := True; 310 343 Align := alClient; 311 Header.PopupMenu := PopupMenu; 344 Header.PopupMenu := Self.PopupMenu; 345 //PopupMenu.Parent := Self.DockSite; 312 346 end; 313 347 if (Control is TForm) and Assigned((Control as TForm).Icon) then … … 417 451 if Control.HostDockSite = Self.FDockSite then begin 418 452 ClientPanel := FindControlInPanels(Control); 453 419 454 //if Assigned(ClientPanel) then ClientPanel.Splitter.Free; 455 //Control.RemoveHandlerOnVisibleChanged(ClientPanel.VisibleChange); 420 456 FDockPanels.Remove(ClientPanel); 421 457 if FDockSite.DockClientCount = 2 then FDockDirection := ddNone; … … 474 510 if AValue = dsTabs then begin 475 511 DockStyleHandler := TCoolDockStyleTabs.Create(Self); 512 TCoolDockStyleTabs(DockStyleHandler).TabControlChange(Self); 476 513 end else 477 514 if AValue = dsList then begin … … 488 525 end; 489 526 527 procedure TCoolDockManager.SetHeaderPos(const AValue: THeaderPos); 528 begin 529 530 end; 531 490 532 procedure TCoolDockManager.SetMaster(const AValue: TCoolDockMaster); 491 533 begin … … 498 540 end; 499 541 542 procedure TCoolDockManager.SetVisible(const AValue: Boolean); 543 var 544 I: Integer; 545 begin 546 // for I := 0 to DockPanels.Count - 1 do 547 // TCoolDockClientPanel(DockPanels[I]).Visible := AValue; 548 end; 549 500 550 procedure TCoolDockManager.UpdateClientSize; 501 551 begin … … 507 557 procedure TCoolDockConjoinForm.FormShow(Sender: TObject); 508 558 begin 509 //Panel.Show; 559 Panel.Show; 560 TCoolDockManager(Panel.DockManager).Visible := True; 561 end; 562 563 procedure TCoolDockConjoinForm.FormHide(Sender: TObject); 564 var 565 I: Integer; 566 begin 567 Panel.Hide; 568 TCoolDockManager(Panel.DockManager).Visible := False; 569 // Hide all docked childs 570 with TCoolDockManager(Panel.DockManager) do 571 for I := 0 to DockPanels.Count - 1 do 572 if Assigned(TCoolDockClientPanel(DockPanels[I]).Control) then 573 TCoolDockClientPanel(DockPanels[I]).Control.Hide; 510 574 end; 511 575 … … 517 581 Parent := Self; 518 582 Name := Parent.Name + '_Panel'; 583 Caption := ''; 519 584 DockSite := True; 520 585 UseDockManager := True; … … 530 595 end; 531 596 OnShow := FormShow; 597 OnHide := FormHide; 598 599 Panel.AddHandlerOnVisibleChanged(PanelVisibleChange); 600 end; 601 602 destructor TCoolDockConjoinForm.Destroy; 603 begin 604 Panel.RemoveHandlerOnVisibleChanged(PanelVisibleChange); 605 inherited; 606 end; 607 608 procedure TCoolDockConjoinForm.PanelVisibleChange(Sender: TObject); 609 begin 610 Visible := Panel.Visible; 532 611 end; 533 612
Note:
See TracChangeset
for help on using the changeset viewer.