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.11 - (show annotations) (download) (as text)
Mon Aug 6 16:07:50 2007 UTC (16 years, 8 months ago) by h677
Branch: MAIN
CVS Tags: v1_59_0_771, v1_59_0_770, v1_59_0_773, v1_59_0_772, v1_59_0_775, v1_59_0_774, v1_59_0_777, v1_59_0_776, v1_59_0_778, v1_63_1_819, v1_57_0_737, v1_62_0_812, v1_57_0_735, v1_57_0_734, v1_57_0_733, v1_57_0_732, v1_57_0_731, v1_57_0_730, v1_57_0_739, v1_57_0_738, v1_59_1_765, v1_60_0_788, v1_60_0_789, v1_58_0_748, v1_58_0_745, v1_60_0_781, v1_60_0_782, v1_58_0_746, v1_60_0_784, v1_60_0_786, v1_60_0_787, v1_59_0_767, v1_59_1_778, v1_57_0_723, v1_59_0_768, v1_59_0_769, v1_57_0_725, v1_57_0_726, v1_57_0_727, v1_57_0_722, v1_57_1_744, v1_57_0_728, v1_57_0_729, v1_57_0_736, v1_58_0_752, v1_58_0_750, v1_58_0_751, v1_58_0_756, v1_58_0_757, v1_58_0_754, v1_58_0_755, v1_58_0_759, v1_61_0_796, v1_61_0_797, v1_61_0_795, v1_61_0_798, v1_61_0_799, v1_63_0_818, v1_63_0_817, v1_63_0_816, v1_63_0_815, v1_62_0_805, v1_62_0_804, v1_62_0_807, v1_62_0_806, v1_62_0_803, v1_62_0_802, v1_62_0_809, v1_60_0_780, v1_60_0_779, v1_62_0_810, v1_62_0_811, v1_58_0_747, v1_60_0_783, v1_59_2_785, v1_60_1_793, v1_58_0_763, v1_58_0_762, v1_58_0_761, v1_58_0_760, v1_62_1_813, v1_57_2_749, v1_57_0_742, v1_57_0_743, v1_57_0_740, v1_57_0_741, v1_57_0_744, v1_61_0_800, v1_60_0_793, v1_60_0_792, v1_60_0_791, v1_60_0_790, v1_60_2_794, v1_61_1_801, HEAD
Branch point for: Bb57, Bb62, Bb63, Bb60, Bb61, Bb59, Bb58
Changes since 1.10: +12 -5 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; selected: String);
68 function ValidateKey(key, category: String): boolean;
69 public
70 { Public 鐃緒申鐃緒申 }
71 procedure SetUpFromEditor();
72 procedure SetUpFromMain();
73 function GetInsertText(): String;
74 end;
75
76 var
77 InputAssistForm: TInputAssistForm;
78
79 implementation
80
81 uses Setting, MojuUtils;
82
83
84 {$R *.dfm}
85 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
86 procedure TInputAssistForm.FormCreate(Sender: TObject);
87 var
88 wp: TWindowPlacement;
89 i : Integer;
90 column: TListColumn;
91 begin
92 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
93 wp.length := sizeof(wp);
94 wp.rcNormalPosition.Top := GikoSys.Setting.InputAssistFormTop;
95 wp.rcNormalPosition.Left := GikoSys.Setting.InputAssistFormLeft;
96
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);
103
104 FSortColumn := 0;
105 GikoListView1.Columns.Clear;
106 column := GikoListView1.Columns.Add;
107 column.ImageIndex := 0;
108 column.Caption := '鐃?鐃?';
109 column.Width := 150;
110 column := GikoListView1.Columns.Add;
111 column.Caption := '鐃?鐃?鐃?鐃緒申';
112 column.Width := 80;
113 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
114 AddListViewItem(InputAssistDM.GetResistWord(i));
115 end;
116 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 (鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申)
117 InputAssistDM.Sorted := False;
118 end;
119 //! 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
120 procedure TInputAssistForm.AddListViewItem(ResWord : TResistWord);
121 var
122 item: TListItem;
123 begin
124 item := GikoListView1.Items.Add;
125 item.ImageIndex := -1;
126 item.Caption := resWord.GetKey;
127 item.SubItems.Add(resWord.GetCategory);
128 item.Data := resWord;
129 end;
130 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
131 procedure TInputAssistForm.GikoListView1SelectItem(Sender: TObject;
132 Item: TListItem; Selected: Boolean);
133 begin
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;
138 end else begin
139 TextMemo.Lines.Text := '';
140 end;
141 end;
142 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
143 procedure TInputAssistForm.AddButtonClick(Sender: TObject);
144 var
145 resWord : TResistWord;
146 begin
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;
156 end else begin
157 ShowMessage('鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
158 end;
159 end;
160 end;
161 //! 鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?
162 function TInputAssistForm.ValidateKey(key, category: String): boolean;
163 begin
164 Result := True;
165 if (Length(key) = 0) then begin
166 ShowMessage('鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
167 Result := False;
168 end else begin
169 if (Length(category) = 0) then begin
170 ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
171 Result := False;
172 end;
173 end;
174 end;
175
176 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
177 procedure TInputAssistForm.DeleteButtonClick(Sender: TObject);
178 begin
179 if GikoListView1.Selected <> nil then begin
180 InputAssistDM.DeleteResistWord(GikoListView1.Selected.Data);
181 GikoListView1.Selected.Data := nil;
182 GikoListView1.DeleteSelected;
183 end;
184 end;
185 //! 鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
186 procedure TInputAssistForm.ApplyButtonClick(Sender: TObject);
187 var
188 resWord : TResistWord;
189 begin
190 if GikoListView1.Selected <> nil then begin
191 if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin
192 resWord := TResistWord(GikoListView1.Selected.Data);
193 // 鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
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 // 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?ChangeKey鐃緒申鐃緒申鐃緒申
201 if (resWord.GetKey <> KeyNameEdit.Text) then begin
202 resWord.SetKey(KeyNameEdit.Text);
203 InputAssistDM.ChangeKey(resWord);
204 end;
205 // 鐃緒申鐃緒申鐃緒申鐃?鐃?
206 GikoListView1.Selected.Caption := resWord.GetKey;
207 GikoListView1.Selected.SubItems[0] := resWord.GetCategory;
208 SetCategory(CategoryNameComboBox, resWord.GetCategory);
209 GikoListView1.AlphaSort;
210 end else begin
211 ShowMessage('鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
212 end;
213 end;
214 end;
215 end;
216 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
217 procedure TInputAssistForm.FormClose(Sender: TObject;
218 var Action: TCloseAction);
219 begin
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 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
225 InputAssistDM.Sorted := True;
226 end;
227 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
228 procedure TInputAssistForm.GikoListView1Compare(Sender: TObject; Item1,
229 Item2: TListItem; Data: Integer; var Compare: Integer);
230 begin
231 if ((FSortColumn and 2) > 0) then begin
232 // 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
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));
238 end;
239 end else begin
240 // 鐃?鐃?鐃緒申鐃?鐃?鐃?
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]));
246 end;
247 end;
248 // 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
249 if ((FSortColumn and 1) > 0) then begin
250 Compare := Compare * -1;
251 end;
252 ;
253 end;
254 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?
255 procedure TInputAssistForm.GikoListView1ColumnClick(Sender: TObject;
256 Column: TListColumn);
257 var
258 i : Integer;
259 begin
260 if Column <> nil then begin
261 // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
262 for i := 0 to GikoListView1.Columns.Count - 1 do begin
263 GikoListView1.Column[i].ImageIndex := -1;
264 end;
265
266 // FSortColumn 鐃緒申鐃緒申:鐃緒申鐃緒申 鐃緒申鐃緒申鐃?鐃?鐃緒申
267 if Column.Caption = '鐃?鐃?' then begin
268 if FSortColumn = 0 then begin
269 FSortColumn := 1;
270 end else begin
271 FSortColumn := 0;
272 end;
273 end else begin
274 if FSortColumn = 2 then begin
275 FSortColumn := 3;
276 end else begin
277 FSortColumn := 2;
278 end;
279 end;
280 Column.ImageIndex := (FSortColumn and 1);
281 GikoListView1.AlphaSort;
282 end;
283
284 end;
285 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
286 procedure TInputAssistForm.CloseButtonClick(Sender: TObject);
287 begin
288 Close();
289 end;
290 //! 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
291 procedure TInputAssistForm.CategoryComboBoxKeyPress(Sender: TObject;
292 var Key: Char);
293 begin
294 Key := #0;
295 end;
296 //! 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
297 procedure TInputAssistForm.CategoryComboBoxChange(Sender: TObject);
298 var
299 i : Integer;
300 key : String;
301 begin
302 LockWindowUpdate(GikoListView1.Handle);
303 GikoListView1.Clear;
304 if (CategoryComboBox.ItemIndex <= 0) then begin
305 for i := 0 to InputAssistDM.ResistWordCount - 1 do begin
306 AddListViewItem(InputAssistDM.GetResistWord(i));
307 end;
308 end else begin
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));
313 end;
314 end;
315 end;
316 LockWindowUpdate(0);
317 end;
318 //! 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申
319 procedure TInputAssistForm.SetCategory(combo: TComboBox; selected: String);
320 var
321 cat : TStringList;
322 i : Integer;
323 begin
324 // 鐃緒申鐃緒申鐃?
325 cat := TStringList.Create;
326 try
327 InputAssistDM.GetCategoryList(cat);
328 combo.Items.BeginUpdate;
329 combo.Items.Clear;
330 combo.Items.Add('');
331 combo.Items.AddStrings(cat);
332 combo.ItemIndex := 0;
333 combo.Items.EndUpdate;
334 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?
335 i := combo.Items.IndexOf(selected);
336 if (i <> -1) then begin
337 combo.ItemIndex := i;
338 end;
339 finally
340 cat.Free;
341 end;
342 end;
343
344 procedure TInputAssistForm.SetUpFromMain();
345 begin
346 Self.Caption := '鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申';
347 Panel3.Visible := True;
348 Panel5.Visible := True;
349 Panel7.Visible := False;
350 TextMemo.ReadOnly := False;
351 FInsertText := '';
352 CloseAction.ShortCut := TShortCut(0);
353 // 鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申OK
354 SetCategory(CategoryNameComboBox, '');
355 end;
356 procedure TInputAssistForm.SetUpFromEditor();
357 begin
358 Self.Caption := '鐃緒申鐃緒申鐃?鐃?鐃?鐃?';
359 Panel3.Visible := False;
360 Panel5.Visible := False;
361 Panel7.Visible := True;
362 TextMemo.ReadOnly := True;
363 FInsertText := '';
364 CloseAction.ShortCut := ShortCut(VK_ESCAPE, []);
365 // 鐃緒申鐃緒申鐃?
366 SetCategory(CategoryComboBox, '');
367 end;
368 function TInputAssistForm.GetInsertText(): String;
369 begin
370 Result := FInsertText;
371 end;
372
373 procedure TInputAssistForm.InsertButtonActionUpdate(Sender: TObject);
374 begin
375 InsertButtonAction.Enabled := (GikoListView1.Selected <> nil);
376 end;
377
378 procedure TInputAssistForm.InsertButtonActionExecute(Sender: TObject);
379 begin
380 if (GikoListView1.Selected = nil) then begin
381 FInsertText := '';
382 Self.ModalResult := mrNone;
383 end else begin
384 FInsertText := TResistWord(GikoListView1.Selected.Data).GetText;
385 Self.ModalResult := mrOk;
386 end;
387 end;
388
389 procedure TInputAssistForm.CloseActionExecute(Sender: TObject);
390 begin
391 Self.ModalResult := mrCancel;
392 end;
393 end.

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