SynEdit 元件的 Search 功能 |
答題得分者是:RedSnow
|
58631309
一般會員 發表:6 回覆:7 積分:2 註冊:2004-11-22 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
58631309 您好: 我感覺您好像是參考到 SynEdit 的 source 目錄內的原始程式碼了,我建議您參考的是 demos 目錄內的 SearchReplaceDemo 範例程式碼,以下是我從自己的程式中擷取出來的部份程式碼,您參考一下吧:
// 設定下列兩個全域變數 AnsiString SearchStr; int StartToFind; // "找尋文字" 按鈕的 OnClick 事件 void __fastcall TForm1::btnFindClick(TObject *Sender) { bool rc = (SynEdit1->SelEnd != SynEdit1->SelStart); if (rc) { FindDialog1->FindText = SynEdit1->SelText; } FindDialog1->Execute(); } // "找尋下一個" 按鈕的 OnClick 事件 void __fastcall TForm1::btnFindNextClick(TObject *Sender) { if (SearchStr != "") { FindDialog1Find(FindDialog1); } else { btnFindClick(Sender); } } // FindDialog 的 OnFind 事件 void __fastcall TForm1::FindDialog1Find(TObject *Sender) { TSynSearchOptions rOptions; bool rc; Screen->Cursor = crHourGlass; StartToFind = SynEdit1->SelStart; if (Sender == FindDialog1) { SearchStr = FindDialog1->FindText; } if (!FindDialog1->Options.Contains(frDown)) { rOptions << ssoBackwards; } if (FindDialog1->Options.Contains(frMatchCase)) { rOptions << ssoMatchCase; } if (FindDialog1->Options.Contains(frWholeWord)) { rOptions << ssoWholeWord; } SynEdit1->SearchEngine = SynEditSearch1; rc = (SynEdit1->SearchReplace(SearchStr, "", rOptions) == 0); Screen->Cursor = crDefault; if (rc) { Beep(); ShowMessage("已找不到符合 [" SearchStr "] 這個字樣的資料了!"); SynEdit1->SetFocus(); } else if (SynEdit1->SelStart == StartToFind) { FindDialog1Find(FindDialog1); } }7 天天敲鍵盤 v 時時按滑鼠 8 |
58631309
一般會員 發表:6 回覆:7 積分:2 註冊:2004-11-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |