DockTabSet

  

Компонент Delphi DockTabSet это элемент управления, который содержит в себе набор вкладок. Пример таких вкладок можете наблюдать на рисунке 1.

Пример компонент DockTabSet

В свойстве DestinationDockSite можно указать контрол, к которому будут пристыковываться наши формы (значение DickSite должно быть равным true), после чего появляется кнопка прикрепить рядом с крестиком. Расположение вкладок зависит от значения свойства TabPosition. Свойство DragKind установленное в dkDock позволяет перетаскивать наши вкладки.

Рассмотрим пример создания таких вкладок. Создаем проект, помешаем на него DockTabSet, устанавливаем следующие свойства для него: Align=alLeft, DockSite=False, TabPosition=tpLeft. Далее Panel установив свойство Align=alLeft, DockSite=True, Width=0. Значение свойства DestinationDockSite выбираем Panel (компонент DockTabSet). Устанавливаем Splitter на нашу форму со следующими свойством Align=alLeft, и Memo с выравниванием alClient. Создаем еще две формы с любым содержанием, можно и пустые как в моем случае.

Пример компонента Delphi DockTabSet

Теперь остается описать события для нашего приложения

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
procedure TForm14.DockTabSet1DockDrop(Sender: TObject; Source: TDragDockObject;
X, Y: Integer);
begin
// отображение панели вкладок
DockTabSet1.Visible := true;
end;

procedure TForm14.DockTabSet1TabRemoved(Sender: TObject);
begin
// Скрывает панель вкладок, если на ней нет закрепленных вкладок
DockTabSet1.Visible := DockTabSet1.Tabs.Count> 0;
end;

procedure TForm14.FormShow(Sender: TObject);
begin
form15.show;
form16.show;
// закрепление форм в панель вкладок методом ManualDock
Form15.ManualDock(DockTabSet1);
Form16.ManualDock(DockTabSet1);
// Вывод Form15
DockTabSet1.ShowDockClient (Form15);
end;

procedure TForm14.Panel1DockDrop(Sender: TObject; Source: TDragDockObject; X,
Y: Integer);
begin
// При закреплении вкладки показывать Panel
if (Panel1.Width=0) then
begin
Panel1.Width := 150;
Splitter1.Visible := true;
Splitter1.Left := Panel1.Width;
end;
end;

procedure TForm14.Panel1UnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
// Если все вкладки спрятаны, то скрыть панель
if Panel1.DockClientCount = 1 then
begin
Panel1.Width := 0;
Splitter1.Visible := false;
end;
end;