-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUFormManager.pas
More file actions
94 lines (77 loc) · 2.18 KB
/
UFormManager.pas
File metadata and controls
94 lines (77 loc) · 2.18 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
unit UFormManager;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
Menus, UDBForm;
type
TFormManager = class(TForm)
private
FRoot: TDBForm;
public
procedure LoadForms(Root: TDBForm; AParent: TTreeNode);
procedure UpDateTree;
published
FDBFormsView: TTreeView;
FShowItem: TMenuItem;
TreeActionsMenu: TPopupMenu;
FCloseChildsMenu: TMenuItem;
FCloseMenu: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FCloseChildsMenuClick(Sender: TObject);
procedure FCloseMenuClick(Sender: TObject);
procedure FShowItemClick(Sender: TObject);
procedure FDBFormsViewMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
end;
var
FormManager: TFormManager = nil;
implementation
{$R *.lfm}
procedure TFormManager.FDBFormsViewMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: integer);
begin
if Button = mbRight then
if FDBFormsView.Selected <> nil then
TreeActionsMenu.PopUp(X + Left, Y + Top);
end;
procedure TFormManager.FShowItemClick(Sender: TObject);
begin
TDBForm(FDBFormsView.Selected.Data).BringToFront;
end;
procedure TFormManager.UpDateTree;
begin
FDBFormsView.Items.Clear;
LoadForms(FRoot, nil);
FDBFormsView.Invalidate;
end;
procedure TFormManager.FCloseMenuClick(Sender: TObject);
begin
TDBForm(FDBFormsView.Selected.Data).Close;
end;
procedure TFormManager.FCloseChildsMenuClick(Sender: TObject);
begin
TDBForm(FDBFormsView.Selected.Data).CloseChildForms;
end;
procedure TFormManager.FormCreate(Sender: TObject);
begin
Caption := 'Менеджер окон';
end;
procedure TFormManager.LoadForms(Root: TDBForm; AParent: TTreeNode);
var
i: integer;
CurNode: TTreeNode;
begin
if (FDBFormsView.Items.Count = 0) or (AParent = nil) then begin
FDBFormsView.Items.Add(nil, 'Root');
FRoot := Root;
end
else
FDBFormsView.Items.AddChild(AParent, Root.Caption);
CurNode := FDBFormsView.Items[FDBFormsView.Items.Count - 1];
CurNode.ExpandParents;
CurNode.Data := Pointer(Root);
for i := 0 to Root.ChildForms.Size - 1 do
LoadForms(Root.ChildForms[i], CurNode);
end;
end.