-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUMain.pas
More file actions
126 lines (109 loc) · 3.21 KB
/
UMain.pas
File metadata and controls
126 lines (109 loc) · 3.21 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
unit UMain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
Menus, ComCtrls, UDBConnection, UDirectory, UAbout, UNotifications,
UDBObjects, USchedule, UDBForm, UFormManager;
type
TMainForm = class(TDBForm)
private
procedure CreateForm(ATable: TDBTable; FormType: TDBFormType);
procedure LoadDirectoryMenyItems;
published
FMainMenu: TMainMenu;
FFileMenu: TMenuItem;
FDirectoryMenu: TMenuItem;
FAboutMenu: TMenuItem;
FOpenMenuItem: TMenuItem;
FStatusBar: TStatusBar;
FScheduleMenu: TMenuItem;
FFormMenu: TMenuItem;
procedure FFormMenuClick(Sender: TObject);
procedure FScheduleMenuClick(Sender: TObject);
procedure FAboutMenuClick(Sender: TObject);
procedure DirectoryMenuItemClick(Sender: TObject);
procedure FormCreate(Sender: TObject); override;
procedure FOpenMenuItemClick(Sender: TObject);
end;
var
MainForm: TMainForm;
implementation
{$R *.lfm}
procedure TMainForm.FormCreate(Sender: TObject);
begin
inherited FormCreate(Sender);
Connection := TDBConnection.Create;
Connection.Connect('DataBase.fdb', 'sysdba', 'masterkey');
Constraints.MinHeight := 40;
Constraints.MinWidth := Width;
Caption := APP_CAPTION;
FStatusBar.SimpleText := Connection.CurrentConnection;
ThisSubscriber := TSubscriber.Create(True);
LoadDirectoryMenyItems;
end;
procedure TMainForm.FScheduleMenuClick(Sender: TObject);
begin
CreateForm(DBData.TablesByName['TimeTable'], TSchedule);
end;
procedure TMainForm.FFormMenuClick(Sender: TObject);
begin
if FormManager = nil then begin
Application.CreateForm(TFormManager, FormManager);
FormManager.LoadForms(Self, nil);
end;
FormManager.Show;
end;
procedure TMainForm.CreateForm(ATable: TDBTable; FormType: TDBFormType);
var
NClass: TNClass;
i: integer;
begin
if Connection.Connected then begin
SetLength(NClass, 0);
for i := 0 to ATable.Count - 1 do begin
SetLength(NClass, Length(NClass) + 1);
NClass[High(NClass)] := ATable.Fields[i].ParentTable.Index;
end;
CreateChildForm(NClass, ATable, FormType, nil, -1);
end
else
ShowMessage('Необходимо подключение к базе данных.');
end;
procedure TMainForm.LoadDirectoryMenyItems;
var
i: integer;
MenuItem: TMenuItem;
begin
for i := 0 to DBData.Count - 1 do begin
MenuItem := TMenuItem.Create(FDirectoryMenu);
MenuItem.Tag := i;
MenuItem.OnClick := @DirectoryMenuItemClick;
MenuItem.Caption := DBData.Tables[i].Name;
FDirectoryMenu.Add(MenuItem);
end;
end;
procedure TMainForm.FOpenMenuItemClick(Sender: TObject);
var
OpenDialog: TOpenDialog;
begin
OpenDialog := TOpenDialog.Create(Self);
OpenDialog.Filter := 'Firebird Database|*.fdb|All Files|*.*';
if OpenDialog.Execute then begin
Connection.Connect(OpenDialog.FileName, 'sysdba', 'masterkey');
FStatusBar.SimpleText := Connection.CurrentConnection;
end;
OpenDialog.Free;
end;
procedure TMainForm.DirectoryMenuItemClick(Sender: TObject);
begin
CreateForm(DBData.Tables[TMenuItem(Sender).Tag], TDirectory);
end;
procedure TMainForm.FAboutMenuClick(Sender: TObject);
var
About: TAboutForm;
begin
Application.CreateForm(TAboutForm, About);
About.Show;
end;
end.