From 9b7865d14b99f8cb3696596fdf13a4eafa7c623a Mon Sep 17 00:00:00 2001 From: h677 Date: Thu, 25 Sep 2003 16:46:29 +0000 Subject: [PATCH] =?utf8?q?=E6=A4=9C=E7=B4=A2=E3=81=AE=E4=B8=AD=E6=AD=A2?= =?utf8?q?=E3=81=8C=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?utf8?q?=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Search.pas | 160 +++++++++++++++++++++++++++++++------------------------------ 1 file changed, 81 insertions(+), 79 deletions(-) diff --git a/Search.pas b/Search.pas index 331e994..c26b1e0 100644 --- a/Search.pas +++ b/Search.pas @@ -40,6 +40,7 @@ type { Private éŒ¾ } FChkItem: TObject; FRegItem: TThreadItem; + FCancel: Boolean; procedure SetCategoryList; procedure SetBoardList(Item: TListItem); procedure CheckItem(Item: TObject); @@ -68,6 +69,7 @@ constructor TSearchDialog.Create(AOwner: TComponent; ChkItem: TObject); begin inherited Create(AOwner); FChkItem := ChkItem; + FCancel := false; end; procedure TSearchDialog.FormCreate(Sender: TObject); @@ -222,14 +224,13 @@ var SearchWord: string; Reg: TGrep; Filter: string; - oldText: string; + oldText: string; begin - // grep “à‚ŃCƒxƒ“ƒg‚ªE‚¦‚Ä‚µ‚Ü‚¤‚̂ŁA‘€ì‚Å‚«‚È‚¢‚悤‚É‚·‚é AllSelectButton.Enabled := False; AllReleaseButton.Enabled := False; OkBotton.Enabled := False; - CancelBotton.Enabled := False; + FCancel := false; CategoryListView.Enabled := False; Screen.Cursor := crHourglass; @@ -240,7 +241,7 @@ begin try if Length( SearchComboBox.Text ) > 0 then begin - // ComboBox ‚Ì“à—e‚ðXV + // ComboBox ‚Ì“à—e‚ðXV oldText := SearchComboBox.Text; i := GikoSys.Setting.SelectTextList.IndexOf( oldText ); if i <> -1 then @@ -252,77 +253,79 @@ begin SearchComboBox.Items.Insert( 0, oldText ); SearchComboBox.Text := oldText; - BoardListView.Clear; - - // grep —p‚ÌŒŸõƒ[ƒh‚𐶐¬ - Reg.OnMatch := OnMatch; - Reg.UseFuzzyCharDic := True; - - If RegExpCheckBox.Checked Then - SearchWord := SearchComboBox.Text - Else - SearchWord := RegExpEncode( SearchComboBox.Text ); - - If NameCheckBox.Checked And - MailCheckBox.Checked And - IDCheckBox.Checked And - SentenceCheckBox.Checked Then - Begin - // ‘S‚ăZƒbƒg‚³‚ê‚Ä‚¢‚éê‡‚͐³‹K•\Œ»‚ð‹É—ÍŽg‚í‚È‚¢ - // (³‹K•\Œ»‚ðŽg‚¤‚Æ‚©‚È‚è’x‚¢‚Ì‚Å) - Reg.RegExp := SearchWord; - End Else Begin - If NameCheckBox.Checked Then - Filter := '.*' + SearchWord + '.*<>' - Else - Filter := '.*<>'; - If MailCheckBox.Checked Then - Filter := Filter + '.*' + SearchWord + '.*<>' - Else - Filter := Filter + '.*<>'; - If IDCheckBox.Checked Then - Filter := Filter + '.*' + SearchWord + '.*<>' - Else - Filter := Filter + '.*<>'; - If SentenceCheckBox.Checked Then - Filter := Filter + '.*' + SearchWord + '.*<>\n' - Else - Filter := Filter + '.*<>\n'; - - Reg.RegExp := Filter; - End; - - // ƒTƒCƒg‚Ì’†‚Ì (‘±‚­) - for i := 0 to BBS2ch.Count - 1 do begin - // ƒJƒeƒSƒŠ‚Ì’†‚Ì (‘±‚­) - Category := BBS2ch.Items[i]; - for j := 0 to Category.Count - 1 do begin - // ”‚̒†‚Ì (‘±‚­) - Board := Category.Items[j]; - if not Board.IsThreadDatRead then - GikoSys.ReadSubjectFile(Board); - if Board.BoolData then begin - for k := 0 to Board.Count - 1 do begin - // ŒÂX‚̃XƒŒƒbƒh‚Ì (‘±‚­) - ThreadItem := Board.Items[k]; - if FileExists( ThreadItem.GetThreadFileName ) then begin - - // ƒƒO‚ª‘¶Ý‚·‚é - try - - // ŒŸõ - // ¦Œ©‚‚©‚Á‚½‚ç OnMatch ‚É”ò‚Ô - FRegItem := ThreadItem; - Reg.GrepByRegExp( ThreadItem.GetThreadFileName ) - - except - end; - - end; - end; - end; - end - end; + BoardListView.Clear; + + // grep —p‚ÌŒŸõƒ[ƒh‚𐶐¬ + Reg.OnMatch := OnMatch; + Reg.UseFuzzyCharDic := True; + + If RegExpCheckBox.Checked Then + SearchWord := SearchComboBox.Text + Else + SearchWord := RegExpEncode( SearchComboBox.Text ); + + If NameCheckBox.Checked And + MailCheckBox.Checked And + IDCheckBox.Checked And + SentenceCheckBox.Checked Then + Begin + // ‘S‚ăZƒbƒg‚³‚ê‚Ä‚¢‚éê‡‚͐³‹K•\Œ»‚ð‹É—ÍŽg‚í‚È‚¢ + // (³‹K•\Œ»‚ðŽg‚¤‚Æ‚©‚È‚è’x‚¢‚Ì‚Å) + Reg.RegExp := SearchWord; + End Else Begin + If NameCheckBox.Checked Then + Filter := '.*' + SearchWord + '.*<>' + Else + Filter := '.*<>'; + If MailCheckBox.Checked Then + Filter := Filter + '.*' + SearchWord + '.*<>' + Else + Filter := Filter + '.*<>'; + If IDCheckBox.Checked Then + Filter := Filter + '.*' + SearchWord + '.*<>' + Else + Filter := Filter + '.*<>'; + If SentenceCheckBox.Checked Then + Filter := Filter + '.*' + SearchWord + '.*<>\n' + Else + Filter := Filter + '.*<>\n'; + + Reg.RegExp := Filter; + End; + + // ƒTƒCƒg‚Ì’†‚Ì (‘±‚­) + try + for i := 0 to BBS2ch.Count - 1 do begin + // ƒJƒeƒSƒŠ‚Ì’†‚Ì (‘±‚­) + Category := BBS2ch.Items[i]; + for j := 0 to Category.Count - 1 do begin + // ”‚̒†‚Ì (‘±‚­) + Board := Category.Items[j]; + if not Board.IsThreadDatRead then + GikoSys.ReadSubjectFile(Board); + if Board.BoolData then begin + for k := 0 to Board.Count - 1 do begin + // ŒÂX‚̃XƒŒƒbƒh‚Ì (‘±‚­) + ThreadItem := Board.Items[k]; + if FileExists( ThreadItem.GetThreadFileName ) then begin + // ƒƒO‚ª‘¶Ý‚·‚é + try + // ŒŸõ + // ¦Œ©‚‚©‚Á‚½‚ç OnMatch ‚É”ò‚Ô + FRegItem := ThreadItem; + Reg.GrepByRegExp( ThreadItem.GetThreadFileName ) + except + end; + end; + end; + Application.ProcessMessages; + if FCancel then raise Exception.Create('ƒƒOŒŸõ‚𒆎~‚µ‚Ü‚·'); + end; + end; + end; + except + on E:Exception do ShowMessage(E.Message) + end; end; finally //sl.Free; @@ -334,10 +337,8 @@ begin AllSelectButton.Enabled := True; AllReleaseButton.Enabled := True; OkBotton.Enabled := True; - CancelBotton.Enabled := True; CategoryListView.Enabled := True; - end; - + end; end; procedure TSearchDialog.BoardListViewDblClick(Sender: TObject); @@ -351,7 +352,8 @@ end; procedure TSearchDialog.CancelBottonClick(Sender: TObject); begin - Self.Close; + //Self.Close; + FCancel := true; end; -- 2.11.0