source: trunk/Forms/UFormDatabases.pas

Last change on this file was 28, checked in by chronos, 20 months ago
  • Modified: Do not create all application forms at initialization phase but dynamically.
File size: 4.1 KB
Line 
1unit UFormDatabases;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
7 Menus, ActnList, UDatabase;
8
9type
10
11 { TFormDatabases }
12
13 TFormDatabases = class(TForm)
14 AAdd: TAction;
15 AOpen: TAction;
16 AModify: TAction;
17 ARemove: TAction;
18 ActionList1: TActionList;
19 ListView1: TListView;
20 MenuItem1: TMenuItem;
21 MenuItem2: TMenuItem;
22 MenuItem3: TMenuItem;
23 MenuItem4: TMenuItem;
24 PopupMenu1: TPopupMenu;
25 ToolBar1: TToolBar;
26 ToolButton1: TToolButton;
27 ToolButton2: TToolButton;
28 ToolButton3: TToolButton;
29 ToolButton4: TToolButton;
30 procedure AAddExecute(Sender: TObject);
31 procedure AModifyExecute(Sender: TObject);
32 procedure AOpenExecute(Sender: TObject);
33 procedure ARemoveExecute(Sender: TObject);
34 procedure FormShow(Sender: TObject);
35 procedure ListView1Data(Sender: TObject; Item: TListItem);
36 procedure ListView1DblClick(Sender: TObject);
37 procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
38 Selected: Boolean);
39 public
40 SelectedProfile: TDbConnectProfile;
41 procedure ReloadList;
42 procedure UpdateInterface;
43 end;
44
45
46implementation
47
48{$R *.lfm}
49
50uses
51 UCore, UFormConnect;
52
53resourcestring
54 SRemoveDatabaseConnection = 'Remove database connection';
55 SRemoveDatabaseConnectionQuery = 'Do you want to really remove database connection %s?';
56 SNewDatabase = 'New database';
57
58{ TFormDatabases }
59
60procedure TFormDatabases.ListView1DblClick(Sender: TObject);
61begin
62 AOpen.Execute;
63end;
64
65procedure TFormDatabases.AOpenExecute(Sender: TObject);
66begin
67 if Assigned(ListView1.Selected) then begin
68 SelectedProfile := TDbConnectProfile(ListView1.Selected.Data);
69 ModalResult := mrOk;
70 end;
71end;
72
73procedure TFormDatabases.ARemoveExecute(Sender: TObject);
74begin
75 if Assigned(ListView1.Selected) then begin
76 if MessageDlg(SRemoveDatabaseConnection, Format(SRemoveDatabaseConnectionQuery, [
77 TDbConnectProfile(ListView1.Selected.Data).Name]), mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
78 Core.DbManager.ConnectProfiles.Remove(ListView1.Selected.Data);
79 ReloadList;
80 end;
81 end;
82end;
83
84procedure TFormDatabases.AAddExecute(Sender: TObject);
85var
86 NewConnectProfile: TDbConnectProfile;
87begin
88 NewConnectProfile := TDbConnectProfile.Create;
89 NewConnectProfile.Name := SNewDatabase;
90 with TFormConnect.Create(nil) do
91 try
92 Load(NewConnectProfile);
93 if ShowModal = mrOk then begin
94 Save(NewConnectProfile);
95 Core.DbManager.ConnectProfiles.Add(NewConnectProfile);
96 ReloadList;
97 end else NewConnectProfile.Free;
98 finally
99 Free;
100 end;
101end;
102
103procedure TFormDatabases.AModifyExecute(Sender: TObject);
104begin
105 if Assigned(ListView1.Selected) then begin
106 with TFormConnect.Create(nil) do
107 try
108 Load(TDbConnectProfile(ListView1.Selected.Data));
109 if ShowModal = mrOk then begin
110 Save(TDbConnectProfile(ListView1.Selected.Data));
111 ReloadList;
112 end;
113 finally
114 Free;
115 end;
116 end;
117end;
118
119procedure TFormDatabases.FormShow(Sender: TObject);
120var
121 I: Integer;
122begin
123 for I := 0 to ToolBar1.ButtonCount - 1 do
124 ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption;
125 ReloadList;
126end;
127
128procedure TFormDatabases.ListView1Data(Sender: TObject; Item: TListItem);
129begin
130 if (Item.Index >= 0) and (Item.Index < Core.DbManager.ConnectProfiles.Count) then
131 with TDbConnectProfile(Core.DbManager.ConnectProfiles[Item.Index]) do begin
132 Item.Caption := Name;
133 Item.SubItems.Add(ClientType.Name);
134 Item.SubItems.Add(Params.ConnectionString);
135 Item.Data := Core.DbManager.ConnectProfiles[Item.Index];
136 end
137end;
138
139procedure TFormDatabases.ListView1SelectItem(Sender: TObject; Item: TListItem;
140 Selected: Boolean);
141begin
142 UpdateInterface;
143end;
144
145procedure TFormDatabases.ReloadList;
146begin
147 ListView1.Items.Count := Core.DbManager.ConnectProfiles.Count;
148 ListView1.Repaint;
149 UpdateInterface;
150end;
151
152procedure TFormDatabases.UpdateInterface;
153begin
154 AModify.Enabled := Assigned(ListView1.Selected);
155 ARemove.Enabled := Assigned(ListView1.Selected);
156 AOpen.Enabled := Assigned(ListView1.Selected);
157end;
158
159end.
160
Note: See TracBrowser for help on using the repository browser.