Ignore:
Timestamp:
Sep 17, 2010, 7:27:04 AM (14 years ago)
Author:
george
Message:
  • Přidáno: Pokusná podpora pro hiearchické ukotvení do podpanelů.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • DockManager/Lazarus/UCustomDockManager.pas

    r44 r45  
    4949    FDockPanels: TObjectList; // of TDockClientPanel
    5050    function FindControlInPanels(Control: TControl): TDockClientPanel;
     51    procedure InsertControlPanel(Control: TControl; InsertAt: TAlign;
     52      DropCtl: TControl);
    5153  public
    5254    constructor Create(ADockSite: TWinControl); override;
     
    127129end;
    128130
    129 procedure TCustomDockManager.InsertControl(Control: TControl; InsertAt: TAlign;
     131procedure TCustomDockManager.InsertControlPanel(Control: TControl; InsertAt: TAlign;
    130132  DropCtl: TControl);
    131133var
     
    133135  NewPanel: TDockClientPanel;
    134136  I: Integer;
    135   NewConjoinDockForm: TConjoinDockForm;
    136 begin
    137   if (FDockSite is TForm) and (not Assigned(FDockSite.Parent)) then begin
    138     NewConjoinDockForm := TConjoinDockForm.Create(nil);
    139     NewConjoinDockForm.Visible := True;
    140     Control.ManualDock(NewConjoinDockForm.Panel);
    141     FDockSite.ManualDock(NewConjoinDockForm.Panel);
    142   end else
    143   if FDockSite is TPanel then begin
     137begin
    144138    if FDockSite.DockClientCount = 2 then begin
    145139      if (InsertAt = alTop) or (InsertAt = alBottom) then
     
    149143        FDockDirection := ddHorizontal
    150144      else FDockDirection := ddHorizontal;
    151     end;
     145    end;// else FDockSite.DockClientCount > 2 then begin
     146
     147    //end;
    152148    if FDockSite.DockClientCount > 1 then begin
    153149      NewSplitter := TSplitter.Create(nil);
     
    190186        FDockSite.DockClientCount;
    191187    end;
     188end;
     189
     190procedure TCustomDockManager.InsertControl(Control: TControl; InsertAt: TAlign;
     191  DropCtl: TControl);
     192var
     193  NewSplitter: TSplitter;
     194  NewDockPanel: TDockClientPanel;
     195  NewPanel: TPanel;
     196  I: Integer;
     197  NewConjoinDockForm: TConjoinDockForm;
     198begin
     199  if (FDockSite is TForm) then begin
     200    if (not Assigned(FDockSite.Parent)) then begin
     201      // Create conjointed form
     202      NewConjoinDockForm := TConjoinDockForm.Create(nil);
     203      NewConjoinDockForm.Visible := True;
     204      Control.ManualDock(NewConjoinDockForm.Panel);
     205      FDockSite.ManualDock(NewConjoinDockForm.Panel);
     206    end else begin
     207      NewPanel := TPanel.Create(nil);
     208      NewPanel.Parent := FDockSite.Parent;
     209      NewPanel.Visible := True;
     210      NewPanel.Left := FDockSite.Left;
     211      NewPanel.Top := FDockSite.Top;
     212      NewPanel.Width := FDockSite.Width;
     213      NewPanel.Height := FDockSite.Height;
     214      NewPanel.UseDockManager := True;
     215      NewPanel.DockSite := True;
     216      NewPanel.Color := clGreen;
     217      NewPanel.ManualDock(FDockSite.HostDockSite);
     218//      FDockSite.Parent := nil;
     219      Control.ManualDock(NewPanel);
     220      FDockSite.ManualDock(NewPanel);
     221    end;
     222  end else
     223  if FDockSite is TPanel then begin
     224    InsertControlPanel(Control, InsertAt, DropCtl);
    192225  end;
    193226
Note: See TracChangeset for help on using the changeset viewer.