Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/InputAssist.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.8 - (show annotations) (download) (as text)
Sun May 6 07:09:55 2007 UTC (16 years, 11 months ago) by h677
Branch: MAIN
CVS Tags: v1_56_0_707, v1_56_0_705, v1_56_0_704, v1_56_0_703, v1_56_0_702, v1_56_0_701, v1_56_0_700, v1_56_0_710, v1_56_0_711, v1_56_0_714, v1_56_0_712, v1_56_0_713, marged_bRESPOPUP, v1_56_0_706, v1_56_0_709, v1_56_0_708
Branch point for: bRESPOPUP
Changes since 1.7: +31 -16 lines
File MIME type: text/x-pascal
入力アシストの設定時のカテゴリ入力に既存のカテゴリをコンボボックスで選択
できるように修正

1 unit InputAssist;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, ComCtrls, GikoListView, Menus, ExtCtrls, ImgList,
8 InputAssistDataModule, StdActns, ActnList, GikoSystem;
9
10 type
11 TInputAssistForm = class(TForm)
12 Panel1: TPanel;
13 Panel2: TPanel;
14 GikoListView1: TGikoListView;
15 Panel3: TPanel;
16 Panel4: TPanel;
17 TextMemo: TMemo;
18 ColumnImageList: TImageList;
19 InputAssistFormActionList: TActionList;
20 EditCut1: TEditCut;
21 EditCopy1: TEditCopy;
22 EditPaste1: TEditPaste;
23 EditSelectAll1: TEditSelectAll;
24 EditUndo1: TEditUndo;
25 EditDelete1: TEditDelete;
26 GroupBox1: TGroupBox;
27 Panel5: TPanel;
28 CloseButton: TButton;
29 ApplyButton: TButton;
30 DeleteButton: TButton;
31 AddButton: TButton;
32 Panel6: TPanel;
33 Panel7: TPanel;
34 CategoryComboBox: TComboBox;
35 CategoryComboLabel: TLabel;
36 InsertButton: TButton;
37 InsertButtonAction: TAction;
38 CloseAction: TAction;
39 KeyPanel: TPanel;
40 KeyNameEdit: TLabeledEdit;
41 Splitter: TSplitter;
42 CategoryPanel: TPanel;
43 CategoryNameComboBox: TComboBox;
44 CategoryNameLabel: TLabel;
45 procedure FormCreate(Sender: TObject);
46 procedure GikoListView1SelectItem(Sender: TObject; Item: TListItem;
47 Selected: Boolean);
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;
55 Column: TListColumn);
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);
62 private
63 { Private 鐃緒申鐃緒申 }
64 FSortColumn : Integer;
65 FInsertText : String;
66 procedure AddListViewItem(ResWord : TResistWord);
67 procedure SetCategory(combo: TComboBox);
68 public
69 { Public 鐃緒申鐃緒申 }
70 procedure SetUpFromEditor();
71 procedure SetUpFromMain();
72 function GetInsertText(): String;
73 end;
74
75 var
76 InputAssistForm: TInputAssistForm;
77
78 implementation
79
80 uses Setting, MojuUtils;
81
82
83 {$R *.dfm}
84 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
85 procedure TInputAssistForm.FormCreate(Sender: TObject);
86 var
87 wp: TWindowPlacement;
88 i : Integer;
89 column: TListColumn;
90 begin
91 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
92 wp.length := sizeof(wp);
93 wp.rcNormalPosition.Top := GikoSys.Setting.InputAssistFormTop;
94 wp.rcNormalPosition.Left := GikoSys.Setting.InputAssistFormLeft;
95
96 wp.rcNormalPosition.Bottom := GikoSys.Setting.InputAssistFormTop
97 + GikoSys.Setting.InputAssistFormHeight;
98 wp.rcNormalPosition.Right := GikoSys.Setting.InputAssistFormLeft
99 + GikoSys.Setting.InputAssistFormWidth;
100 wp.showCmd := SW_HIDE;
101 SetWindowPlacement(Handle, @wp);
102
103 FSortColumn := 0;
104 GikoListView1.Columns.Clear;
105 column := GikoListView1.Columns.Add;
106 column.ImageIndex := 0;
107 column.Caption := '鐃?鐃?';
108 column.Width := 150;
109 column := GikoListView1.Columns.Add;
110 column.Caption := '鐃?鐃?鐃?鐃緒申';
111 column.Width := 80;
112 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
113 AddListViewItem(InputAssistDM.GetResistWord(i));
114 end;
115 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 (鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申)
116 InputAssistDM.Sorted := False;
117 end;
118 //! 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
119 procedure TInputAssistForm.AddListViewItem(ResWord : TResistWord);
120 var
121 item: TListItem;
122 begin
123 item := GikoListView1.Items.Add;
124 item.ImageIndex := -1;
125 item.Caption := resWord.GetKey;
126 item.SubItems.Add(resWord.GetCategory);
127 item.Data := resWord;
128 end;
129 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
130 procedure TInputAssistForm.GikoListView1SelectItem(Sender: TObject;
131 Item: TListItem; Selected: Boolean);
132 begin
133 if (Item <> nil) and (Item.Data <> nil) then begin
134 KeyNameEdit.Text := TResistWord(Item.Data).GetKey;
135 CategoryNameComboBox.Text := TResistWord(Item.Data).GetCategory;
136 TextMemo.Lines.Text := TResistWord(Item.Data).GetText;
137 end else begin
138 TextMemo.Lines.Text := '';
139 end;
140 end;
141 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
142 procedure TInputAssistForm.AddButtonClick(Sender: TObject);
143 var
144 resWord : TResistWord;
145 begin
146 if (Length(KeyNameEdit.Text) = 0) then begin
147 ShowMessage('鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
148 end else begin
149 if (not InputAssistDM.IsDupulicate(
150 KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin
151 resWord := InputAssistDM.Add(KeyNameEdit.Text);
152 resWord.SetCategory(CategoryNameComboBox.Text);
153 resWord.SetText(TextMemo.Text);
154 AddListViewItem(resWord);
155 SetCategory(CategoryNameComboBox);
156 GikoListView1.AlphaSort;
157 end else begin
158 ShowMessage('鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
159 end;
160 end;
161 end;
162 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
163 procedure TInputAssistForm.DeleteButtonClick(Sender: TObject);
164 begin
165 if GikoListView1.Selected <> nil then begin
166 InputAssistDM.DeleteResistWord(GikoListView1.Selected.Data);
167 GikoListView1.Selected.Data := nil;
168 GikoListView1.DeleteSelected;
169 end;
170 end;
171 //! 鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
172 procedure TInputAssistForm.ApplyButtonClick(Sender: TObject);
173 var
174 resWord : TResistWord;
175 begin
176 if GikoListView1.Selected <> nil then begin
177 if (Length(KeyNameEdit.Text) = 0) then begin
178 ShowMessage('鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
179 end else begin
180 resWord := TResistWord(GikoListView1.Selected.Data);
181 resWord.SetKey(KeyNameEdit.Text);
182 resWord.SetCategory(CategoryNameComboBox.Text);
183 resWord.SetText(TextMemo.Text);
184 // 鐃緒申鐃緒申鐃緒申鐃?鐃?
185 GikoListView1.Selected.Caption := resWord.GetKey;
186 GikoListView1.Selected.SubItems[0] := resWord.GetCategory;
187 SetCategory(CategoryNameComboBox);
188 GikoListView1.AlphaSort;
189 end;
190 end;
191 end;
192 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
193 procedure TInputAssistForm.FormClose(Sender: TObject;
194 var Action: TCloseAction);
195 begin
196 GikoSys.Setting.InputAssistFormTop := Self.Top;
197 GikoSys.Setting.InputAssistFormLeft := Self.Left;
198 GikoSys.Setting.InputAssistFormHeight := Self.Height;
199 GikoSys.Setting.InputAssistFormWidth := Self.Width;
200 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
201 InputAssistDM.Sorted := True;
202 end;
203 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
204 procedure TInputAssistForm.GikoListView1Compare(Sender: TObject; Item1,
205 Item2: TListItem; Data: Integer; var Compare: Integer);
206 begin
207 if ((FSortColumn and 2) > 0) then begin
208 // 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
209 Compare := CompareStr(
210 ZenToHan(Item1.SubItems[0]), ZenToHan(Item2.SubItems[0]));
211 if (Compare = 0) then begin
212 Compare := CompareStr(
213 ZenToHan(Item1.Caption), ZenToHan(Item2.Caption));
214 end;
215 end else begin
216 // 鐃?鐃?鐃緒申鐃?鐃?鐃?
217 Compare := CompareStr(
218 ZenToHan(Item1.Caption), ZenToHan(Item2.Caption));
219 if (Compare = 0) then begin
220 Compare := CompareStr(
221 ZenToHan(Item1.SubItems[0]), ZenToHan(Item2.SubItems[0]));
222 end;
223 end;
224 // 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
225 if ((FSortColumn and 1) > 0) then begin
226 Compare := Compare * -1;
227 end;
228 ;
229 end;
230 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?
231 procedure TInputAssistForm.GikoListView1ColumnClick(Sender: TObject;
232 Column: TListColumn);
233 var
234 i : Integer;
235 begin
236 if Column <> nil then begin
237 // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
238 for i := 0 to GikoListView1.Columns.Count - 1 do begin
239 GikoListView1.Column[i].ImageIndex := -1;
240 end;
241
242 // FSortColumn 鐃緒申鐃緒申:鐃緒申鐃緒申 鐃緒申鐃緒申鐃?鐃?鐃緒申
243 if Column.Caption = '鐃?鐃?' then begin
244 if FSortColumn = 0 then begin
245 FSortColumn := 1;
246 end else begin
247 FSortColumn := 0;
248 end;
249 end else begin
250 if FSortColumn = 2 then begin
251 FSortColumn := 3;
252 end else begin
253 FSortColumn := 2;
254 end;
255 end;
256 Column.ImageIndex := (FSortColumn and 1);
257 GikoListView1.AlphaSort;
258 end;
259
260 end;
261 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
262 procedure TInputAssistForm.CloseButtonClick(Sender: TObject);
263 begin
264 Close();
265 end;
266 //! 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
267 procedure TInputAssistForm.CategoryComboBoxKeyPress(Sender: TObject;
268 var Key: Char);
269 begin
270 Key := #0;
271 end;
272 //! 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
273 procedure TInputAssistForm.CategoryComboBoxChange(Sender: TObject);
274 var
275 i : Integer;
276 key : String;
277 begin
278 LockWindowUpdate(GikoListView1.Handle);
279 GikoListView1.Clear;
280 if (CategoryComboBox.ItemIndex <= 0) then begin
281 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
282 AddListViewItem(InputAssistDM.GetResistWord(i));
283 end;
284 end else begin
285 key := CategoryComboBox.Items[CategoryComboBox.ItemIndex];
286 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
287 if (key = InputAssistDM.GetResistWord(i).GetCategory) then begin
288 AddListViewItem(InputAssistDM.GetResistWord(i));
289 end;
290 end;
291 end;
292 LockWindowUpdate(0);
293 end;
294 //! 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申
295 procedure TInputAssistForm.SetCategory(combo: TComboBox);
296 var
297 cat : TStringList;
298 begin
299 // 鐃緒申鐃緒申鐃?
300 cat := TStringList.Create;
301 try
302 InputAssistDM.GetCategoryList(cat);
303 combo.Items.BeginUpdate;
304 combo.Items.Clear;
305 combo.Items.Add('');
306 combo.Items.AddStrings(cat);
307 combo.ItemIndex := 0;
308 combo.Items.EndUpdate;
309 finally
310 cat.Free;
311 end;
312 end;
313
314 procedure TInputAssistForm.SetUpFromMain();
315 begin
316 Self.Caption := '鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申';
317 Panel3.Visible := True;
318 Panel5.Visible := True;
319 Panel7.Visible := False;
320 TextMemo.ReadOnly := False;
321 FInsertText := '';
322 CloseAction.ShortCut := TShortCut(0);
323 // 鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申OK
324 SetCategory(CategoryNameComboBox);
325 end;
326 procedure TInputAssistForm.SetUpFromEditor();
327 var
328 cat : TStringList;
329 begin
330 Self.Caption := '鐃緒申鐃緒申鐃?鐃?鐃?鐃?';
331 Panel3.Visible := False;
332 Panel5.Visible := False;
333 Panel7.Visible := True;
334 TextMemo.ReadOnly := True;
335 FInsertText := '';
336 CloseAction.ShortCut := ShortCut(VK_ESCAPE, []);
337 // 鐃緒申鐃緒申鐃?
338 SetCategory(CategoryComboBox);
339 end;
340 function TInputAssistForm.GetInsertText(): String;
341 begin
342 Result := FInsertText;
343 end;
344
345 procedure TInputAssistForm.InsertButtonActionUpdate(Sender: TObject);
346 begin
347 InsertButtonAction.Enabled := (GikoListView1.Selected <> nil);
348 end;
349
350 procedure TInputAssistForm.InsertButtonActionExecute(Sender: TObject);
351 begin
352 if (GikoListView1.Selected = nil) then begin
353 FInsertText := '';
354 Self.ModalResult := mrNone;
355 end else begin
356 FInsertText := TResistWord(GikoListView1.Selected.Data).GetText;
357 Self.ModalResult := mrOk;
358 end;
359 end;
360
361 procedure TInputAssistForm.CloseActionExecute(Sender: TObject);
362 begin
363 Self.ModalResult := mrCancel;
364 end;
365 end.

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26