線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1427
推到 Plurk!
推到 Facebook!

SynEdit 元件的 Search 功能

答題得分者是:RedSnow
58631309
一般會員


發表:6
回覆:7
積分:2
註冊:2004-11-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-24 15:18:49 IP:220.134.xxx.xxx 未訂閱
小弟嘗試過了各種方法去搜尋字串怎麼樣得到的回傳值都是 0 ??為什麼?? SynEdit1->SearchEngine->FindAll(SynEdit1->Text); 這樣他回傳值是 1 SynEdit1->SearchEngine->FindAll("java"); 不管我裡面改什麼字串,即使SynEdit1 裡面有的字串,他回傳值依然是 0 ...完全無法理解ㄝ...怎麼辦,有高手可以幫幫我嗎?
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-24 17:16:44 IP:59.115.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-24 23:54:55 IP:220.134.xxx.xxx 未訂閱
太感謝您了,不過小弟我的確是看了 demo 目錄下的程式... 不過完全看不出個所以然... 感謝您的回答
系統時間:2024-04-25 7:02:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!