OSDN Git Service

ハ゛タ62の変更点を追加
[gikonavigoeson/gikonavi.git] / InputAssist.pas
index aab8a6f..3f30c28 100644 (file)
@@ -13,8 +13,6 @@ type
     Panel2: TPanel;
     GikoListView1: TGikoListView;
     Panel3: TPanel;
-    KeyNameEdit: TLabeledEdit;
-    CategoryNameEdit: TLabeledEdit;
        Panel4: TPanel;
        TextMemo: TMemo;
     ColumnImageList: TImageList;
@@ -38,6 +36,12 @@ type
     InsertButton: TButton;
     InsertButtonAction: TAction;
     CloseAction: TAction;
+    KeyPanel: TPanel;
+    KeyNameEdit: TLabeledEdit;
+    Splitter: TSplitter;
+    CategoryPanel: TPanel;
+    CategoryNameComboBox: TComboBox;
+    CategoryNameLabel: TLabel;
     procedure FormCreate(Sender: TObject);
     procedure GikoListView1SelectItem(Sender: TObject; Item: TListItem;
       Selected: Boolean);
@@ -60,6 +64,8 @@ type
        FSortColumn : Integer;
        FInsertText : String;
        procedure AddListViewItem(ResWord : TResistWord);
+    procedure SetCategory(combo: TComboBox; selected: String);
+    function ValidateKey(key, category: String): boolean;
   public
        { Public \90é\8c¾ }
        procedure SetUpFromEditor();
@@ -127,7 +133,7 @@ procedure TInputAssistForm.GikoListView1SelectItem(Sender: TObject;
 begin
        if (Item <> nil) and (Item.Data <> nil) then begin
                KeyNameEdit.Text := TResistWord(Item.Data).GetKey;
-               CategoryNameEdit.Text := TResistWord(Item.Data).GetCategory;
+        CategoryNameComboBox.Text := TResistWord(Item.Data).GetCategory;
                TextMemo.Lines.Text := TResistWord(Item.Data).GetText;
        end else begin
                TextMemo.Lines.Text := '';
@@ -138,16 +144,35 @@ procedure TInputAssistForm.AddButtonClick(Sender: TObject);
 var
        resWord : TResistWord;
 begin
-       if (Length(KeyNameEdit.Text) = 0) then begin
-               ShowMessage('\83L\81[\96¼\82ð\90Ý\92è\82µ\82Ä\82­\82¾\82³\82¢\81B');
-       end else begin
-               resWord := InputAssistDM.Add(KeyNameEdit.Text);
-               resWord.SetCategory(CategoryNameEdit.Text);
-               resWord.SetText(TextMemo.Text);
-               AddListViewItem(resWord);
-               GikoListView1.AlphaSort;
+       if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin
+               if (not InputAssistDM.IsDupulicate(
+                       KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin
+                       resWord := InputAssistDM.Add(KeyNameEdit.Text);
+                       resWord.SetCategory(CategoryNameComboBox.Text);
+                       resWord.SetText(TextMemo.Text);
+                       AddListViewItem(resWord);
+            SetCategory(CategoryNameComboBox, resWord.GetCategory);
+                       GikoListView1.AlphaSort;
+               end else begin
+                       ShowMessage('\93¯\88ê\82Ì\83L\81[\96¼\81E\83J\83e\83S\83\8a\96¼\82Å\8aù\82É\93o\98^\8dÏ\82Ý\82Å\82·\81B');
+               end;
        end;
 end;
+//! \83L\81[\96¼\81E\83J\83e\83S\83\8a\97L\8cø\83`\83F\83b\83N
+function TInputAssistForm.ValidateKey(key, category: String): boolean;
+begin
+    Result := True;
+    if (Length(key) = 0) then begin
+        ShowMessage('\83L\81[\96¼\82ð\90Ý\92è\82µ\82Ä\82­\82¾\82³\82¢\81B');
+        Result := False;
+    end else begin
+        if (Length(category) = 0) then begin
+            ShowMessage('\83J\83e\83S\83\8a\82ð\90Ý\92è\82µ\82Ä\82­\82¾\82³\82¢\81B');
+            Result := False;
+        end;
+    end;
+end;
+
 //! \8dí\8f\9c\83{\83^\83\93\89\9f\89º\8e\9e\82Ì\83C\83x\83\93\83g
 procedure TInputAssistForm.DeleteButtonClick(Sender: TObject);
 begin
@@ -163,17 +188,28 @@ var
        resWord : TResistWord;
 begin
        if GikoListView1.Selected <> nil then begin
-               if (Length(KeyNameEdit.Text) = 0) then begin
-                       ShowMessage('\83L\81[\96¼\82ð\96³\82µ\82É\82Í\82Å\82«\82Ü\82¹\82ñ\81B');
-               end else begin
-                       resWord := TResistWord(GikoListView1.Selected.Data);
-                       resWord.SetKey(KeyNameEdit.Text);
-                       resWord.SetCategory(CategoryNameEdit.Text);
-                       resWord.SetText(TextMemo.Text);
-                       // \88ê\97\97\82Ì\8dX\90V
-                       GikoListView1.Selected.Caption := resWord.GetKey;
-                       GikoListView1.Selected.SubItems[0] := resWord.GetCategory;
-                       GikoListView1.AlphaSort;
+       if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin
+            resWord := TResistWord(GikoListView1.Selected.Data);
+            // \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µ
+            if ((resWord.GetKey = KeyNameEdit.Text)
+                and (resWord.GetCategory = CategoryNameComboBox.Text)) or
+                (not InputAssistDM.IsDupulicate(
+                       KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin
+                resWord.SetCategory(CategoryNameComboBox.Text);
+                resWord.SetText(TextMemo.Text);
+                // \83L\81[\82ª\95Ï\82í\82é\82Æ\82«\82Í\81AChangeKey\82ð\8cÄ\82Ô
+                if (resWord.GetKey <> KeyNameEdit.Text) then begin
+                               resWord.SetKey(KeyNameEdit.Text);
+                    InputAssistDM.ChangeKey(resWord);
+                end;
+                       // \88ê\97\97\82Ì\8dX\90V
+                           GikoListView1.Selected.Caption := resWord.GetKey;
+                       GikoListView1.Selected.SubItems[0] := resWord.GetCategory;
+                SetCategory(CategoryNameComboBox, resWord.GetCategory);
+                       GikoListView1.AlphaSort;
+               end else begin
+                       ShowMessage('\93¯\88ê\82Ì\83L\81[\96¼\81E\83J\83e\83S\83\8a\96¼\82Å\8aù\82É\93o\98^\8dÏ\82Ý\82Å\82·\81B');
+                   end;
                end;
        end;
 end;
@@ -279,6 +315,31 @@ begin
        end;
        LockWindowUpdate(0);
 end;
+//! \83J\83e\83S\83\8a\83R\83\93\83{\83{\83b\83N\83X\90Ý\92è
+procedure TInputAssistForm.SetCategory(combo: TComboBox; selected: String);
+var
+       cat : TStringList;
+    i : Integer;
+begin
+       // \8c\9f\8dõ\97p
+       cat := TStringList.Create;
+       try
+               InputAssistDM.GetCategoryList(cat);
+        combo.Items.BeginUpdate;
+        combo.Items.Clear;
+               combo.Items.Add('');
+               combo.Items.AddStrings(cat);
+               combo.ItemIndex := 0;
+        combo.Items.EndUpdate;
+        // \91I\91ð\8dÏ\82Ý\82Ì\83J\83e\83S\83\8a\82É\83C\83\93\83f\83b\83N\83X\82ð\95Ï\8dX
+        i := combo.Items.IndexOf(selected);
+        if (i <> -1) then begin
+            combo.ItemIndex := i;
+        end;
+       finally
+               cat.Free;
+       end;
+end;
 
 procedure TInputAssistForm.SetUpFromMain();
 begin
@@ -289,10 +350,10 @@ begin
        TextMemo.ReadOnly := False;
        FInsertText := '';
        CloseAction.ShortCut := TShortCut(0);
+       // \92Ç\89Á\97p\83L\81[\93ü\97ÍOK
+    SetCategory(CategoryNameComboBox, '');
 end;
 procedure TInputAssistForm.SetUpFromEditor();
-var
-       cat : TStringList;
 begin
        Self.Caption := '\93ü\97Í\83A\83V\83X\83g';
        Panel3.Visible := False;
@@ -302,16 +363,7 @@ begin
        FInsertText := '';
        CloseAction.ShortCut := ShortCut(VK_ESCAPE, []);
        // \8c\9f\8dõ\97p
-       cat := TStringList.Create;
-       try
-               InputAssistDM.GetCategoryList(cat);
-               CategoryComboBox.Items.Clear;
-               CategoryComboBox.Items.Add('');
-               CategoryComboBox.Items.AddStrings(cat);
-               CategoryComboBox.ItemIndex := 0;
-       finally
-               cat.Free;
-       end;
+    SetCategory(CategoryComboBox, '');
 end;
 function TInputAssistForm.GetInsertText(): String;
 begin
@@ -338,5 +390,4 @@ procedure TInputAssistForm.CloseActionExecute(Sender: TObject);
 begin
        Self.ModalResult := mrCancel;
 end;
-
 end.