6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, ComCtrls, GikoListView, Menus, ExtCtrls, ImgList,
8 InputAssistDataModule, StdActns, ActnList, GikoSystem;
11 TInputAssistForm = class(TForm)
14 GikoListView1: TGikoListView;
18 ColumnImageList: TImageList;
19 InputAssistFormActionList: TActionList;
22 EditPaste1: TEditPaste;
23 EditSelectAll1: TEditSelectAll;
25 EditDelete1: TEditDelete;
30 DeleteButton: TButton;
34 CategoryComboBox: TComboBox;
35 CategoryComboLabel: TLabel;
36 InsertButton: TButton;
37 InsertButtonAction: TAction;
40 KeyNameEdit: TLabeledEdit;
42 CategoryPanel: TPanel;
43 CategoryNameComboBox: TComboBox;
44 CategoryNameLabel: TLabel;
45 procedure FormCreate(Sender: TObject);
46 procedure GikoListView1SelectItem(Sender: TObject; Item: TListItem;
48 procedure AddButtonClick(Sender: TObject);
49 procedure DeleteButtonClick(Sender: TObject);
50 procedure ApplyButtonClick(Sender: TObject);
51 procedure FormClose(Sender: TObject; var Action: TCloseAction);
52 procedure GikoListView1Compare(Sender: TObject; Item1,
53 Item2: TListItem; Data: Integer; var Compare: Integer);
54 procedure GikoListView1ColumnClick(Sender: TObject;
56 procedure CloseButtonClick(Sender: TObject);
57 procedure CategoryComboBoxKeyPress(Sender: TObject; var Key: Char);
58 procedure CategoryComboBoxChange(Sender: TObject);
59 procedure InsertButtonActionUpdate(Sender: TObject);
60 procedure InsertButtonActionExecute(Sender: TObject);
61 procedure CloseActionExecute(Sender: TObject);
64 FSortColumn : Integer;
66 procedure AddListViewItem(ResWord : TResistWord);
67 procedure SetCategory(combo: TComboBox; selected: String);
68 function ValidateKey(key, category: String): boolean;
71 procedure SetUpFromEditor();
72 procedure SetUpFromMain();
73 function GetInsertText(): String;
77 InputAssistForm: TInputAssistForm;
81 uses Setting, MojuUtils;
85 //!
\83t
\83H
\81[
\83\80\90¶
\90¬
\82Ì
\83C
\83x
\83\93\83g
86 procedure TInputAssistForm.FormCreate(Sender: TObject);
92 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\90Ý
\92è
93 wp.length := sizeof(wp);
94 wp.rcNormalPosition.Top := GikoSys.Setting.InputAssistFormTop;
95 wp.rcNormalPosition.Left := GikoSys.Setting.InputAssistFormLeft;
97 wp.rcNormalPosition.Bottom := GikoSys.Setting.InputAssistFormTop
98 + GikoSys.Setting.InputAssistFormHeight;
99 wp.rcNormalPosition.Right := GikoSys.Setting.InputAssistFormLeft
100 + GikoSys.Setting.InputAssistFormWidth;
101 wp.showCmd := SW_HIDE;
102 SetWindowPlacement(Handle, @wp);
105 GikoListView1.Columns.Clear;
106 column := GikoListView1.Columns.Add;
107 column.ImageIndex := 0;
108 column.Caption := '
\83L
\81[';
110 column := GikoListView1.Columns.Add;
111 column.Caption := '
\83J
\83e
\83S
\83\8a';
113 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
114 AddListViewItem(InputAssistDM.GetResistWord(i));
116 //
\83\
\81[
\83g
\8fó
\91Ô
\82ð
\89ð
\8f\9c (
\89ð
\8f\9c\82µ
\82È
\82¢
\82Æ
\83A
\83C
\83e
\83\80\82Ì
\83L
\81[
\96¼
\82ð
\95Ï
\8dX
\82Å
\82«
\82È
\82¢)
117 InputAssistDM.Sorted := False;
119 //!
\88ê
\97\97\82É
\83A
\83C
\83e
\83\80\82ð
\92Ç
\89Á
\82·
\82é
\8f\88\97\9d
120 procedure TInputAssistForm.AddListViewItem(ResWord : TResistWord);
124 item := GikoListView1.Items.Add;
125 item.ImageIndex := -1;
126 item.Caption := resWord.GetKey;
127 item.SubItems.Add(resWord.GetCategory);
128 item.Data := resWord;
130 //!
\93o
\98^
\92P
\8cê
\88ê
\97\97\82©
\82ç
\83A
\83C
\83e
\83\80\82ð
\91I
\91ð
\82µ
\82½
\82Æ
\82«
\82Ì
\83C
\83x
\83\93\83g
131 procedure TInputAssistForm.GikoListView1SelectItem(Sender: TObject;
132 Item: TListItem; Selected: Boolean);
134 if (Item <> nil) and (Item.Data <> nil) then begin
135 KeyNameEdit.Text := TResistWord(Item.Data).GetKey;
136 CategoryNameComboBox.Text := TResistWord(Item.Data).GetCategory;
137 TextMemo.Lines.Text := TResistWord(Item.Data).GetText;
139 TextMemo.Lines.Text := '';
142 //!
\92Ç
\89Á
\83{
\83^
\83\93\89\9f\89º
\8e\9e\82Ì
\83C
\83x
\83\93\83g
143 procedure TInputAssistForm.AddButtonClick(Sender: TObject);
145 resWord : TResistWord;
147 if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin
148 if (not InputAssistDM.IsDupulicate(
149 KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin
150 resWord := InputAssistDM.Add(KeyNameEdit.Text);
151 resWord.SetCategory(CategoryNameComboBox.Text);
152 resWord.SetText(TextMemo.Text);
153 AddListViewItem(resWord);
154 SetCategory(CategoryNameComboBox, resWord.GetCategory);
155 GikoListView1.AlphaSort;
157 ShowMessage('
\93¯
\88ê
\82Ì
\83L
\81[
\96¼
\81E
\83J
\83e
\83S
\83\8a\96¼
\82Å
\8aù
\82É
\93o
\98^
\8dÏ
\82Ý
\82Å
\82·
\81B');
161 //!
\83L
\81[
\96¼
\81E
\83J
\83e
\83S
\83\8a\97L
\8cø
\83`
\83F
\83b
\83N
162 function TInputAssistForm.ValidateKey(key, category: String): boolean;
165 if (Length(key) = 0) then begin
166 ShowMessage('
\83L
\81[
\96¼
\82ð
\90Ý
\92è
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
169 if (Length(category) = 0) then begin
170 ShowMessage('
\83J
\83e
\83S
\83\8a\82ð
\90Ý
\92è
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
176 //!
\8dí
\8f\9c\83{
\83^
\83\93\89\9f\89º
\8e\9e\82Ì
\83C
\83x
\83\93\83g
177 procedure TInputAssistForm.DeleteButtonClick(Sender: TObject);
179 if GikoListView1.Selected <> nil then begin
180 InputAssistDM.DeleteResistWord(GikoListView1.Selected.Data);
181 GikoListView1.Selected.Data := nil;
182 GikoListView1.DeleteSelected;
185 //!
\93K
\97p
\83{
\83^
\83\93\89\9f\89º
\8e\9e\82Ì
\83C
\83x
\83\93\83g
186 procedure TInputAssistForm.ApplyButtonClick(Sender: TObject);
188 resWord : TResistWord;
190 if GikoListView1.Selected <> nil then begin
191 if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin
192 resWord := TResistWord(GikoListView1.Selected.Data);
193 //
\95Ï
\8dX
\91O
\82Ì
\83L
\81[
\81^
\83J
\83e
\83S
\83\8a\82Æ
\93¯
\88ê
\82à
\82µ
\82
\82Í
\81A
\91¼
\82Æ
\8fd
\95¡
\96³
\82µ
194 if ((resWord.GetKey = KeyNameEdit.Text)
195 and (resWord.GetCategory = CategoryNameComboBox.Text)) or
196 (not InputAssistDM.IsDupulicate(
197 KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin
198 resWord.SetCategory(CategoryNameComboBox.Text);
199 resWord.SetText(TextMemo.Text);
200 //
\83L
\81[
\82ª
\95Ï
\82í
\82é
\82Æ
\82«
\82Í
\81AChangeKey
\82ð
\8cÄ
\82Ô
201 if (resWord.GetKey <> KeyNameEdit.Text) then begin
202 resWord.SetKey(KeyNameEdit.Text);
203 InputAssistDM.ChangeKey(resWord);
205 //
\88ê
\97\97\82Ì
\8dX
\90V
206 GikoListView1.Selected.Caption := resWord.GetKey;
207 GikoListView1.Selected.SubItems[0] := resWord.GetCategory;
208 SetCategory(CategoryNameComboBox, resWord.GetCategory);
209 GikoListView1.AlphaSort;
211 ShowMessage('
\93¯
\88ê
\82Ì
\83L
\81[
\96¼
\81E
\83J
\83e
\83S
\83\8a\96¼
\82Å
\8aù
\82É
\93o
\98^
\8dÏ
\82Ý
\82Å
\82·
\81B');
216 //!
\83t
\83H
\81[
\83\80\82ð
\95Â
\82¶
\82é
\82Æ
\82«
\82Ì
\83C
\83x
\83\93\83g
217 procedure TInputAssistForm.FormClose(Sender: TObject;
218 var Action: TCloseAction);
220 GikoSys.Setting.InputAssistFormTop := Self.Top;
221 GikoSys.Setting.InputAssistFormLeft := Self.Left;
222 GikoSys.Setting.InputAssistFormHeight := Self.Height;
223 GikoSys.Setting.InputAssistFormWidth := Self.Width;
224 //
\83\
\81[
\83g
\8fó
\91Ô
\82Ì
\90Ý
\92è
225 InputAssistDM.Sorted := True;
227 //!
\93o
\98^
\92P
\8cê
\88ê
\97\97\82Ì
\83\
\81[
\83g
\97p
\82Ì
\94ä
\8ar
\8f\88\97\9d
228 procedure TInputAssistForm.GikoListView1Compare(Sender: TObject; Item1,
229 Item2: TListItem; Data: Integer; var Compare: Integer);
231 if ((FSortColumn and 2) > 0) then begin
232 //
\83J
\83e
\83S
\83\8a\82Å
\83\
\81[
\83g
233 Compare := CompareStr(
234 ZenToHan(Item1.SubItems[0]), ZenToHan(Item2.SubItems[0]));
235 if (Compare = 0) then begin
236 Compare := CompareStr(
237 ZenToHan(Item1.Caption), ZenToHan(Item2.Caption));
240 //
\83L
\81[
\82Å
\83\
\81[
\83g
241 Compare := CompareStr(
242 ZenToHan(Item1.Caption), ZenToHan(Item2.Caption));
243 if (Compare = 0) then begin
244 Compare := CompareStr(
245 ZenToHan(Item1.SubItems[0]), ZenToHan(Item2.SubItems[0]));
248 //
\8f¸
\8f\87\8d~
\8f\87\82Ì
\94½
\93]
249 if ((FSortColumn and 1) > 0) then begin
250 Compare := Compare * -1;
254 //!
\93o
\98^
\92P
\8cê
\88ê
\97\97\82Ì
\83\8a\83X
\83g
\82Ì
\83J
\83\89\83\80\83N
\83\8a\83b
\83N
\83C
\83x
\83\93\83g
255 procedure TInputAssistForm.GikoListView1ColumnClick(Sender: TObject;
256 Column: TListColumn);
260 if Column <> nil then begin
261 //
\83C
\83\81\81[
\83W
\82Ì
\8dí
\8f\9c
262 for i := 0 to GikoListView1.Columns.Count - 1 do begin
263 GikoListView1.Column[i].ImageIndex := -1;
266 // FSortColumn
\8bô
\90\94:
\8f¸
\8f\87 \8aï
\90\94\81F
\8d~
\8f\87
267 if Column.Caption = '
\83L
\81[' then begin
268 if FSortColumn = 0 then begin
274 if FSortColumn = 2 then begin
280 Column.ImageIndex := (FSortColumn and 1);
281 GikoListView1.AlphaSort;
285 //!
\8fI
\97¹
\83{
\83^
\83\93\82ð
\89\9f\89º
\8e\9e\82Ì
\83C
\83x
\83\93\83g
286 procedure TInputAssistForm.CloseButtonClick(Sender: TObject);
290 //!
\83J
\83e
\83S
\83\8a\8di
\8d\9e\82Ý
\83R
\83\93\83{
\83{
\83b
\83N
\83X
\82ð
\93Ç
\8eæ
\90ê
\97p
\82É
\82·
\82é
\82½
\82ß
\82Ì
\83C
\83x
\83\93\83g
\8f\88\97\9d
291 procedure TInputAssistForm.CategoryComboBoxKeyPress(Sender: TObject;
296 //!
\83J
\83e
\83S
\83\8a\8di
\8d\9e\82Ý
\83R
\83\93\83{
\83{
\83b
\83N
\83X
\82Å
\82Ì
\83J
\83e
\83S
\83\8a\95Ï
\8dX
\8f\88\97\9d
297 procedure TInputAssistForm.CategoryComboBoxChange(Sender: TObject);
302 LockWindowUpdate(GikoListView1.Handle);
304 if (CategoryComboBox.ItemIndex <= 0) then begin
305 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
306 AddListViewItem(InputAssistDM.GetResistWord(i));
309 key := CategoryComboBox.Items[CategoryComboBox.ItemIndex];
310 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
311 if (key = InputAssistDM.GetResistWord(i).GetCategory) then begin
312 AddListViewItem(InputAssistDM.GetResistWord(i));
318 //!
\83J
\83e
\83S
\83\8a\83R
\83\93\83{
\83{
\83b
\83N
\83X
\90Ý
\92è
319 procedure TInputAssistForm.SetCategory(combo: TComboBox; selected: String);
325 cat := TStringList.Create;
327 InputAssistDM.GetCategoryList(cat);
328 combo.Items.BeginUpdate;
331 combo.Items.AddStrings(cat);
332 combo.ItemIndex := 0;
333 combo.Items.EndUpdate;
334 //
\91I
\91ð
\8dÏ
\82Ý
\82Ì
\83J
\83e
\83S
\83\8a\82É
\83C
\83\93\83f
\83b
\83N
\83X
\82ð
\95Ï
\8dX
335 i := combo.Items.IndexOf(selected);
336 if (i <> -1) then begin
337 combo.ItemIndex := i;
344 procedure TInputAssistForm.SetUpFromMain();
346 Self.Caption := '
\93ü
\97Í
\83A
\83V
\83X
\83g
\90Ý
\92è';
347 Panel3.Visible := True;
348 Panel5.Visible := True;
349 Panel7.Visible := False;
350 TextMemo.ReadOnly := False;
352 CloseAction.ShortCut := TShortCut(0);
353 //
\92Ç
\89Á
\97p
\83L
\81[
\93ü
\97ÍOK
354 SetCategory(CategoryNameComboBox, '');
356 procedure TInputAssistForm.SetUpFromEditor();
358 Self.Caption := '
\93ü
\97Í
\83A
\83V
\83X
\83g';
359 Panel3.Visible := False;
360 Panel5.Visible := False;
361 Panel7.Visible := True;
362 TextMemo.ReadOnly := True;
364 CloseAction.ShortCut := ShortCut(VK_ESCAPE, []);
366 SetCategory(CategoryComboBox, '');
368 function TInputAssistForm.GetInsertText(): String;
370 Result := FInsertText;
373 procedure TInputAssistForm.InsertButtonActionUpdate(Sender: TObject);
375 InsertButtonAction.Enabled := (GikoListView1.Selected <> nil);
378 procedure TInputAssistForm.InsertButtonActionExecute(Sender: TObject);
380 if (GikoListView1.Selected = nil) then begin
382 Self.ModalResult := mrNone;
384 FInsertText := TResistWord(GikoListView1.Selected.Data).GetText;
385 Self.ModalResult := mrOk;
389 procedure TInputAssistForm.CloseActionExecute(Sender: TObject);
391 Self.ModalResult := mrCancel;