X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=InputAssist.pas;h=3f30c28221b30e974cda5b22205db6c61c680f35;hb=16a2c70986300b7812926a8c3b3ead285b8b8991;hp=118a6372454c0b53ad32c7d8f51a07654ba81685;hpb=b0c12e2b89f2b53df742776dc11a6456fc22e739;p=gikonavigoeson%2Fgikonavi.git diff --git a/InputAssist.pas b/InputAssist.pas index 118a637..3f30c28 100644 --- a/InputAssist.pas +++ b/InputAssist.pas @@ -40,7 +40,8 @@ type KeyNameEdit: TLabeledEdit; Splitter: TSplitter; CategoryPanel: TPanel; - CategoryNameEdit: TLabeledEdit; + CategoryNameComboBox: TComboBox; + CategoryNameLabel: TLabel; procedure FormCreate(Sender: TObject); procedure GikoListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); @@ -63,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 éŒ¾ } procedure SetUpFromEditor(); @@ -130,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 := ''; @@ -141,21 +144,35 @@ procedure TInputAssistForm.AddButtonClick(Sender: TObject); var resWord : TResistWord; begin - if (Length(KeyNameEdit.Text) = 0) then begin - ShowMessage('ƒL[–¼‚ðÝ’肵‚Ä‚­‚¾‚³‚¢B'); - end else begin + if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin if (not InputAssistDM.IsDupulicate( - KeyNameEdit.Text, CategoryNameEdit.Text) ) then begin + KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin resWord := InputAssistDM.Add(KeyNameEdit.Text); - resWord.SetCategory(CategoryNameEdit.Text); + resWord.SetCategory(CategoryNameComboBox.Text); resWord.SetText(TextMemo.Text); AddListViewItem(resWord); + SetCategory(CategoryNameComboBox, resWord.GetCategory); GikoListView1.AlphaSort; end else begin ShowMessage('“¯ˆê‚̃L[–¼EƒJƒeƒSƒŠ–¼‚ÅŠù‚É“o˜^Ï‚Ý‚Å‚·B'); end; end; end; +//! ƒL[–¼EƒJƒeƒSƒŠ—LŒøƒ`ƒFƒbƒN +function TInputAssistForm.ValidateKey(key, category: String): boolean; +begin + Result := True; + if (Length(key) = 0) then begin + ShowMessage('ƒL[–¼‚ðÝ’肵‚Ä‚­‚¾‚³‚¢B'); + Result := False; + end else begin + if (Length(category) = 0) then begin + ShowMessage('ƒJƒeƒSƒŠ‚ðÝ’肵‚Ä‚­‚¾‚³‚¢B'); + Result := False; + end; + end; +end; + //! íœƒ{ƒ^ƒ“‰Ÿ‰ºŽž‚̃Cƒxƒ“ƒg procedure TInputAssistForm.DeleteButtonClick(Sender: TObject); begin @@ -171,17 +188,28 @@ var resWord : TResistWord; begin if GikoListView1.Selected <> nil then begin - if (Length(KeyNameEdit.Text) = 0) then begin - ShowMessage('ƒL[–¼‚𖳂µ‚É‚Í‚Å‚«‚Ü‚¹‚ñB'); - end else begin - resWord := TResistWord(GikoListView1.Selected.Data); - resWord.SetKey(KeyNameEdit.Text); - resWord.SetCategory(CategoryNameEdit.Text); - resWord.SetText(TextMemo.Text); - // ˆê——‚̍XV - 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); + // •ÏX‘O‚̃L[^ƒJƒeƒSƒŠ‚Æ“¯ˆê‚à‚µ‚­‚́A‘¼‚Əd•¡–³‚µ + 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); + // ƒL[‚ª•Ï‚í‚é‚Æ‚«‚́AChangeKey‚ðŒÄ‚Ô + if (resWord.GetKey <> KeyNameEdit.Text) then begin + resWord.SetKey(KeyNameEdit.Text); + InputAssistDM.ChangeKey(resWord); + end; + // ˆê——‚̍XV + GikoListView1.Selected.Caption := resWord.GetKey; + GikoListView1.Selected.SubItems[0] := resWord.GetCategory; + SetCategory(CategoryNameComboBox, resWord.GetCategory); + GikoListView1.AlphaSort; + end else begin + ShowMessage('“¯ˆê‚̃L[–¼EƒJƒeƒSƒŠ–¼‚ÅŠù‚É“o˜^Ï‚Ý‚Å‚·B'); + end; end; end; end; @@ -287,6 +315,31 @@ begin end; LockWindowUpdate(0); end; +//! ƒJƒeƒSƒŠƒRƒ“ƒ{ƒ{ƒbƒNƒXÝ’è +procedure TInputAssistForm.SetCategory(combo: TComboBox; selected: String); +var + cat : TStringList; + i : Integer; +begin + // ŒŸõ—p + 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; + // ‘I‘ðÏ‚݂̃JƒeƒSƒŠ‚ɃCƒ“ƒfƒbƒNƒX‚ð•ÏX + i := combo.Items.IndexOf(selected); + if (i <> -1) then begin + combo.ItemIndex := i; + end; + finally + cat.Free; + end; +end; procedure TInputAssistForm.SetUpFromMain(); begin @@ -297,10 +350,10 @@ begin TextMemo.ReadOnly := False; FInsertText := ''; CloseAction.ShortCut := TShortCut(0); + // ’ljÁ—pƒL[“ü—ÍOK + SetCategory(CategoryNameComboBox, ''); end; procedure TInputAssistForm.SetUpFromEditor(); -var - cat : TStringList; begin Self.Caption := '“ü—̓AƒVƒXƒg'; Panel3.Visible := False; @@ -310,16 +363,7 @@ begin FInsertText := ''; CloseAction.ShortCut := ShortCut(VK_ESCAPE, []); // ŒŸõ—p - 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 @@ -346,5 +390,4 @@ procedure TInputAssistForm.CloseActionExecute(Sender: TObject); begin Self.ModalResult := mrCancel; end; - end.