source: tags/1.3.1/Forms/UFormCategories.pas

Last change on this file was 104, checked in by chronos, 8 years ago
  • Added: DPI scaling for icons and toolbars.
File size: 4.8 KB
Line 
1unit UFormCategories;
2
3{$mode delphi}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
9 ActnList, Menus, UAcronym;
10
11type
12
13 { TFormCategories }
14
15 TFormCategories = class(TForm)
16 AAdd: TAction;
17 ASelectAll: TAction;
18 ARemove: TAction;
19 AModify: TAction;
20 ActionList1: TActionList;
21 ListViewCategories: TListView;
22 MenuItem1: TMenuItem;
23 MenuItem2: TMenuItem;
24 MenuItem3: TMenuItem;
25 MenuItem4: TMenuItem;
26 PopupMenuCategory: TPopupMenu;
27 ToolBar1: TToolBar;
28 ToolButton1: TToolButton;
29 ToolButton2: TToolButton;
30 ToolButton3: TToolButton;
31 procedure AAddExecute(Sender: TObject);
32 procedure AModifyExecute(Sender: TObject);
33 procedure ARemoveExecute(Sender: TObject);
34 procedure ASelectAllExecute(Sender: TObject);
35 procedure FormCreate(Sender: TObject);
36 procedure FormShow(Sender: TObject);
37 procedure ListViewCategoriesData(Sender: TObject; Item: TListItem);
38 procedure ListViewCategoriesDblClick(Sender: TObject);
39 procedure ListViewCategoriesKeyPress(Sender: TObject; var Key: char);
40 procedure ListViewCategoriesSelectItem(Sender: TObject; Item: TListItem;
41 Selected: Boolean);
42 private
43 { private declarations }
44 public
45 Categories: TAcronymCategories;
46 procedure UpdateList;
47 procedure UpdateInterface;
48 end;
49
50var
51 FormCategories: TFormCategories;
52
53implementation
54
55{$R *.lfm}
56
57uses
58 UCore;
59
60resourcestring
61 SCategory = 'Category';
62 SCategoryQuery = 'Enter name of category';
63 SRemoveCategory = 'Remove categories';
64 SRemoveCategoryQuery = 'Do you really want to remove selected categories?';
65 SCategoryAlreadyExists = 'Category %s already exists!';
66
67{ TFormCategories }
68
69procedure TFormCategories.FormShow(Sender: TObject);
70begin
71 UpdateList;
72 Core.ScaleDPI1.ScaleControl(ToolBar1, Core.ScaleDPI1.DesignDPI);
73end;
74
75procedure TFormCategories.AAddExecute(Sender: TObject);
76var
77 S: string;
78begin
79 S := InputBox(SCategory, SCategoryQuery, '');
80 if S <> '' then begin
81 if not Assigned(Core.AcronymDb.Categories.SearchByName(S)) then begin;
82 TAcronymCategory(Core.AcronymDb.Categories[Core.AcronymDb.Categories.Add(TAcronymCategory.Create)]).Name := S;
83 Core.AcronymDb.Modified := True;
84 UpdateList;
85 end else ShowMessage(Format(SCategoryAlreadyExists, [S]));
86 end;
87end;
88
89procedure TFormCategories.AModifyExecute(Sender: TObject);
90var
91 S: string;
92begin
93 if Assigned(ListViewCategories.Selected) then begin
94 S := InputBox(SCategory, SCategoryQuery, ListViewCategories.Selected.Caption);
95 if S <> ListViewCategories.Selected.Caption then begin
96 if not Assigned(Core.AcronymDb.Categories.SearchByName(S)) then begin;
97 TAcronymCategory(ListViewCategories.Selected.Data).Name := S;
98 Core.AcronymDb.Modified := True;
99 UpdateList;
100 end else ShowMessage(Format(SCategoryAlreadyExists, [S]));
101 end;
102 end;
103end;
104
105procedure TFormCategories.ARemoveExecute(Sender: TObject);
106var
107 I: Integer;
108begin
109 if Assigned(ListViewCategories.Selected) then begin
110 if MessageDlg(SRemoveCategory, SRemoveCategoryQuery,
111 TMsgDlgType.mtConfirmation, [mbCancel, mbOk], 0) = mrOk then begin
112 for I := ListViewCategories.Items.Count - 1 downto 0 do
113 if ListViewCategories.Items[I].Selected then
114 Categories.Remove(ListViewCategories.Items[I].Data);
115 UpdateList;
116 end;
117 end;
118end;
119
120procedure TFormCategories.ASelectAllExecute(Sender: TObject);
121var
122 I: Integer;
123begin
124 for I := 0 to ListViewCategories.Items.Count - 1 do
125 ListViewCategories.Items[I].Selected := True;
126end;
127
128procedure TFormCategories.FormCreate(Sender: TObject);
129var
130 I: Integer;
131begin
132 Core.CoolTranslator1.TranslateComponentRecursive(Self);
133 for I := 0 to ToolBar1.ButtonCount - 1 do
134 ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption;
135end;
136
137procedure TFormCategories.ListViewCategoriesData(Sender: TObject; Item: TListItem);
138begin
139 if Item.Index < Core.AcronymDb.Categories.Count then
140 with TAcronymCategory(Core.AcronymDb.Categories[Item.Index]) do begin
141 Item.Caption := Name;
142 Item.Data := Core.AcronymDb.Categories[Item.Index];
143 Item.SubItems.Add(IntToStr(AcronymMeanings.Count));
144 end;
145end;
146
147procedure TFormCategories.ListViewCategoriesDblClick(Sender: TObject);
148begin
149 AModify.Execute;
150end;
151
152procedure TFormCategories.ListViewCategoriesKeyPress(Sender: TObject;
153 var Key: char);
154begin
155 if Key = #27 then Close;
156end;
157
158procedure TFormCategories.ListViewCategoriesSelectItem(Sender: TObject; Item: TListItem;
159 Selected: Boolean);
160begin
161 UpdateInterface;
162end;
163
164procedure TFormCategories.UpdateList;
165begin
166 ListViewCategories.Items.Count := Core.AcronymDb.Categories.Count;
167 ListViewCategories.Refresh;
168 UpdateInterface;
169end;
170
171procedure TFormCategories.UpdateInterface;
172begin
173 ARemove.Enabled := Assigned(ListViewCategories.Selected);
174 AModify.Enabled := Assigned(ListViewCategories.Selected);
175end;
176
177end.
178
Note: See TracBrowser for help on using the repository browser.