+ if (not FSorted) and (Value) then begin
+ FDictionary.CustomSort(KeySort);
+ end;
+ FSorted := Value;
+end;
+//! Key\82Ì\83J\83e\83S\83\8a\82É\93o\98^\82³\82ê\82Ä\82¢\82é\92P\8cê\82ð\8eæ\93¾
+function TInputAssistDM.GetCategoryResistWords(Key: String; var list: TStringList): Integer;
+var
+ i : Integer;
+ resWord : TResistWord;
+begin
+ Result := 0;
+ if (FDictionary <> nil) and (list <> nil) then begin
+ for i := 0 to FDictionary.Count - 1 do begin
+ resWord := TResistWord(FDictionary.Objects[i]);
+ if (Key = resWord.GetCategory) then begin
+ Inc(Result);
+ list.AddObject(resWord.GetKey + '(' +
+ resWord.GetCategory + ')', resWord);
+ end;
+ end;
+ list.CustomSort(CategorySort);
+ end;
+end;
+
+//! \93o\98^\8dÏ\82Ý\83L\81[\82Ì\91S\82Ä\82Ì\83J\83e\83S\83\8a\83\8a\83X\83g\8eæ\93¾
+procedure TInputAssistDM.GetCategoryList(var list: TStringList);
+var
+ i : Integer;
+begin
+ if (FDictionary <> nil) and (list <> nil) then begin
+ // \8fd\95¡\83`\83F\83b\83N\82ðTStringList\82Ì\8b@\94\\82Å\8ds\82¤
+ list.Clear;
+ list.Duplicates := dupIgnore;
+ list.Sorted := true;
+ list.BeginUpdate;
+ for i := 0 to FDictionary.Count - 1 do begin
+ list.Add(TResistWord(FDictionary.Objects[i]).GetCategory);
+ end;
+ list.EndUpdate;
+ end;
+end;
+
+//! Key\82ð\83J\83e\83S\83\8a\82É\8e\9d\82Â\93o\98^\92P\8cê\82ð\95Ô\82·\8e\9e\82Ì\83\\81[\83g\97p\94ä\8ar\83\81\83\\83b\83h
+function CategorySort(List: TStringList; Index1, Index2: Integer): Integer;
+var
+ resWord1 : TResistWord;
+ resWord2 : TResistWord;
+begin
+ Result := 0;
+ try
+ resWord1 := TResistWord(List.Objects[Index1]);
+ resWord2 := TResistWord(List.Objects[Index2]);
+ Result := CompareStr(ZenToHan(resWord1.GetCategory),
+ ZenToHan(resWord2.GetCategory));
+ if (Result = 0) then begin
+ Result := CompareStr(ZenToHan(resWord1.GetKey),
+ ZenToHan(resWord2.GetKey));
+ end;
+ except
+ end;
+end;
+//! Key\82ð\91S\94¼\8ap\96³\8e\8b\82Ì\8c`\82Å\83\\81[\83g\82·\82é\8dÛ\82Ì\94ä\8ar\83\81\83\\83b\83h
+function KeySort(List: TStringList; Index1, Index2: Integer): Integer;
+var
+ resWord1 : TResistWord;
+ resWord2 : TResistWord;
+begin
+ Result := 0;
+ try
+ resWord1 := TResistWord(List.Objects[Index1]);
+ resWord2 := TResistWord(List.Objects[Index2]);
+ Result := CompareStr(ZenToHan(resWord1.FKey),
+ ZenToHan(resWord2.FKey));
+ if (Result = 0) then begin
+ Result := CompareStr(ZenToHan(resWord1.GetCategory),
+ ZenToHan(resWord2.GetCategory));
+ end;
+ except
+ end;
+end;
+//! \8aù\82É\93o\98^\8dÏ\82Ý\82Ì\83L\81[\82Æ\83J\83e\83S\83\8a\82Ì\83Z\83b\83g\82©\82Ç\82¤\82©\83`\83F\83b\83N
+function TInputAssistDM.IsDupulicate(Key: String; Category: String): Boolean;
+var
+ i : Integer;
+ resWord : TResistWord;
+begin
+ // \82±\82Ì\83\81\83\\83b\83h\82Å\82Í\81A\83\\81[\83g\8dÏ\82Ý\82Æ\82Í\8cÀ\82ç\82È\82¢\82Ì\82Å\81A\91S\82Ä\82Ì\83L\81[\82ð\92T\8dõ\82µ\82Ä\82¢\82é
+ Result := False;