Ignore:
Timestamp:
Dec 29, 2010, 1:56:04 PM (14 years ago)
Author:
george
Message:
  • Fixed: Hiding invisible docked forms as tabs.
  • Added: Ability to bring window to front on execute Form.Show.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Docking/CoolDocking/UCoolDockStyleTabs.pas

    r98 r103  
    66
    77uses
    8   Classes, Controls, ExtCtrls, ComCtrls, SysUtils,
     8  Classes, Controls, ExtCtrls, ComCtrls, SysUtils, Dialogs,
    99  Menus, UCoolDockStyle, Forms, UCoolDockClientPanel;
    1010
     
    2525    procedure TabControlMouseUp(Sender: TObject; Button: TMouseButton;
    2626      Shift: TShiftState; X, Y: Integer);
    27     constructor Create(AManager: TObject);
    28     destructor Destroy; override;
    2927    procedure InsertControl(NewPanel: TCoolDockClientPanel;
    3028      AControl: TControl; InsertAt: TAlign); override;
     
    3331    FTabsPos: THeaderPos;
    3432  public
     33    constructor Create(AManager: TObject);
     34    destructor Destroy; override;
     35    procedure ChangeVisible(Control: TWinControl; Visible: Boolean); override;
     36    procedure Switch(Index: Integer); override;
    3537    procedure SetTabsPos(const AValue: THeaderPos);
    3638    procedure PopupMenuTabCloseClick(Sender: TObject);
     
    5355procedure TCoolDockStyleTabs.TabControlMouseLeave(Sender: TObject);
    5456begin
    55 (*  if MouseDown then
     57  if MouseDown then
     58  with TCoolDockManager(Manager) do
    5659  if (TabControl.TabIndex <> -1) then begin
    57     TCoolDockClientPanel(FDockPanels[TabControl.TabIndex]).ClientAreaPanel.DockSite := False;
    58     DragManager.DragStart(TCoolDockClientPanel(FDockPanels[TabControl.TabIndex]).Control, False, 1);
     60    TCoolDockClientPanel(DockPanels[TabControl.TabIndex]).ClientAreaPanel.DockSite := False;
     61    DragManager.DragStart(TCoolDockClientPanel(DockPanels[TabControl.TabIndex]).Control, False, 1);
    5962  end;
    6063  MouseDown := False;
    61   *)
    6264end;
    6365
     
    6971  with TCoolDockManager(Manager) do
    7072  for I := 0 to DockPanels.Count - 1 do begin
    71     TCoolDockClientPanel(DockPanels[I]).ClientAreaPanel.Visible := False;
     73    TCoolDockClientPanel(DockPanels[I]).Control.Hide;
     74    TCoolDockClientPanel(DockPanels[I]).ClientAreaPanel.Hide;
    7275    TCoolDockClientPanel(DockPanels[I]).ClientAreaPanel.Parent := DockSite;
    7376    TCoolDockClientPanel(DockPanels[I]).Control.Align := alClient;
    74     TCoolDockClientPanel(DockPanels[I]).Control.Visible := False;
     77    //ShowMessage(TCoolDockClientPanel(DockPanels[I]).Control.ClassName);
     78    Application.ProcessMessages;
    7579
    7680    // Workaround for "Cannot focus" error
    7781    TForm(TCoolDockClientPanel(DockPanels[I]).Control).ActiveControl := nil;
    7882  end;
     83
     84  // Show selected
    7985  with TCoolDockManager(Manager) do
    8086  if (TabControl.TabIndex <> -1) and (DockPanels.Count > TabControl.TabIndex) then begin
     
    9399      *)
    94100        //Parent := DockSite;
     101        //Show;
    95102        Visible := True;
    96103        UpdateClientSize;
     
    160167    TCoolDockClientPanel(DockPanels[I]).Visible := False;
    161168  end;
    162   TabControlChange(Self);
    163169end;
    164170
    165171destructor TCoolDockStyleTabs.Destroy;
    166172begin
    167   TabControl.Visible := False;
    168   TabControl.Tabs.Clear;
     173  TabControl.Free;
     174  TabImageList.Free;
    169175  inherited Destroy;
     176end;
     177
     178procedure TCoolDockStyleTabs.Switch(Index: Integer);
     179begin
     180  inherited Switch(Index);
     181  TabControl.TabIndex := Index;
    170182end;
    171183
     
    196208end;
    197209
     210procedure TCoolDockStyleTabs.ChangeVisible(Control: TWinControl; Visible: Boolean);
     211var
     212  I: Integer;
     213begin
     214  inherited;
     215  if not Visible then
     216  if Assigned(TWinControl(Control).DockManager) then
     217  with TCoolDockManager(TWinControl(Control).DockManager) do begin
     218//    ShowMessage(IntToStr(DockPanels.Count));
     219  end;
     220end;
     221
    198222procedure TCoolDockStyleTabs.SetTabsPos(const AValue: THeaderPos);
    199223begin
Note: See TracChangeset for help on using the changeset viewer.