FindDialog+RichEdit |
尚未結案
|
chead
一般會員 發表:10 回覆:12 積分:4 註冊:2004-08-03 發送簡訊給我 |
|
meta
中階會員 發表:3 回覆:60 積分:57 註冊:2004-06-09 發送簡訊給我 |
1.做一個可以在RichEdit內"向上搜尋"的功能
//修改自 BGman大的文章,D5下可執行
http://delphi.ktop.com.tw/topic.php?topic_id=25477 procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt,nStartPos,nToEnd:Integer;
search:Integer;
begin
if RichEdit1.SelLength > 0 then
nStartPos:=RichEdit1.SelStart十RichEdit1.SelLength
else
nStartPos:=0;
nToEnd:=Length(RichEdit1.Text) - nStartPos;
if frDown in FindDialog1.Options then
FoundAt:=RichEdit1.FindText(FindDialog1.FindText,
nStartPos ,nToEnd,[stMatchCase])
else
begin
search:= -1 ;
repeat
FoundAt:= search ;
search := RichEdit1.FindText(FindDialog1.FindText,
search十1,RichEdit1.SelStart-search-1,[stMatchCase]);
until search<0 ;
end;
if ( FoundAt<>-1 ) then
begin
RichEdit1.SetFocus;
RichEdit1.SelStart:= FoundAt;
RichEdit1.SelLength:=Length(FindDialog1.FindText);
end
else
ShowMessage('找不到'十FindDialog1.FindText 十 '字串!');
end;
//'十'符號怪怪..
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
補充: {所選擇範圍起始}
RichEdit.SelStart :=
{所選擇範圍長度}
RichEdit.SelLength:=
{設定所選範圍字型大小}
RichEdit.SelAttributes.Size:=;
{設定所選範圍字型顏色}
RichEdit.SelAttributes.Color :=;
{設定所選範圍字型樣式}
RichEdit.SelAttributes.Style :=;
{取消選擇範圍}
RichEdit.SelLength :=0; 若HideSelection設為False,使用SelStart就可以指向位置。
否則使用 RichEdit1.Perform(EM_SCROLLCARET, 0, 0);也一樣。 若想要取得某行的Selstart位置,可以使用
RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX,行數, 0);
RichEdit1.SetFocus;
|
meta
中階會員 發表:3 回覆:60 積分:57 註冊:2004-06-09 發送簡訊給我 |
|
chead
一般會員 發表:10 回覆:12 積分:4 註冊:2004-08-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |