FindDiaolg 向上搜尋的功能該如何做到呢? |
尚未結案
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
BCB5 有一個 VCL 元件叫FindDiaolg
小弟成功地試過做到向下搜尋的功能,例如
int FoundAt,StartPos,ToEnd; FoundAt = RichEdit1->FindText(FindDialog1->FindText, StartPos, ToEnd,TSearchTypes())但是FindDiaolg 向上搜尋的功能,我研究了好久都試不出來 請問一下是否有人辦得到呢?同事叫我將 Option 屬性中的向上選項關掉, 可是我覺得我不喜歡鴕鳥心態 |
Cooky Kid
初階會員 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
|
johnny_1121
一般會員 發表:12 回覆:58 積分:24 註冊:2002-04-15 發送簡訊給我 |
bool __fastcall TEditForm::FindText(AnsiString str,TSearchTypes st1,bool bDown) { int start,newpos; TRichEdit *ed = CurSheet->Editor; if (bDown){ start = ed->SelStart ; if (ed->SelLength != 0) start ; newpos = ed->FindText (str,start,ed->Text.Length()-ed->SelStart-1,st1) ; } else if (ed->SelStart >= 1) int search = -1 ; do{ newpos = search ; search = ed->FindText(str,search 1,ed->SelStart - search - 1,st1); } while (search >= 0) ; } else{ newpos = -1 ; } if(newpos != -1){ ed->SelStart = newpos; ed->SelLength = str.Length(); return true; } return false; }post 一段source code給你參考,BGman兄一定看得懂 向上向下搜尋,稍微修改應該沒問題,有問題再問我 |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
感謝 johnny 桑,已經可以達到向上搜尋!
你那個do ... while 迴圈,真是巧妙的設計。
厲害!厲害!
在此整理程式碼,提供給和我一樣需要此功能的人
void __fastcall TForm1::FindDialog1Find(TObject *Sender) { int FoundAt; int nStartPos, nToEnd; if ( RichEdit1->SelLength > 0 ) nStartPos = RichEdit1->SelStart RichEdit1->SelLength; else nStartPos = 0; nToEnd = RichEdit1->Text.Length() - nStartPos; if ( FindDialog1->Options.Contains(frDown) ) FoundAt = RichEdit1->FindText( FindDialog1->FindText , nStartPos , nToEnd, TSearchTypes()); else { int search = -1 ; do{ FoundAt = search ; search = RichEdit1->FindText( FindDialog1->FindText, search 1, RichEdit1->SelStart -search -1, TSearchTypes()); } while (search >= 0) ; } if ( FoundAt != -1 ) { RichEdit1->SetFocus(); RichEdit1->SelStart = FoundAt; RichEdit1->SelLength = FindDialog1->FindText.Length(); } else ShowMessage("找不到" FindDialog1->FindText "字串!"); } |
johnny_1121
一般會員 發表:12 回覆:58 積分:24 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |