PDA

View Full Version : سوال در مورد TRichedit



SUNMOON
یک شنبه 30 دی 1386, 18:14 عصر
دلفی کارای عزیز سلام :لبخند:
من میخوام یه متن رو توی richedit رو سرچ کنم و به جای اون یه متن دیگه رو جایگزین کنم . مشکل اینجاست که میخوام متنی که جایگزین میشه یه سری تنظیمات رو داشته باشه مثلاً bold باشه.

ghabil
دوشنبه 01 بهمن 1386, 19:24 عصر
خب Pos متنی که باید تغییر کنه رو پیدا کن بعد با استفاده از Pos و طول کلمه جایگزین SelStart و SelLength رو داری حالا هر Attributeی که خواستی Set کن

SUNMOON
چهارشنبه 03 بهمن 1386, 17:40 عصر
جناب ghabil منون. اما چطور تویrichedit متن رو جایگزین کنم(من خیلی کم با richedit کار کردم!)

rasool_brn
چهارشنبه 03 بهمن 1386, 23:32 عصر
function Search_And_Replace(RichEdit: TRichEdit;
SearchText, ReplaceText: string): Boolean;
var
startpos, Position, endpos: integer;
begin
startpos := 0;
with RichEdit do
begin
endpos := Length(RichEdit.Text);
Lines.BeginUpdate;
while FindText(SearchText, startpos, endpos, [stMatchCase])<>-1 do
begin
endpos := Length(RichEdit.Text) - startpos;
Position := FindText(SearchText, startpos, endpos, [stMatchCase]);
Inc(startpos, Length(SearchText));
SetFocus;
SelStart := Position;
SelLength := Length(SearchText);
richedit.clearselection;
SelText := ReplaceText;
SelStart:=Position;
SelLength:=Length(ReplaceText);
SelAttributes.Style:=[fsBold,fsItalic];
end;
Lines.EndUpdate;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Search_And_Replace(Richedit1, 'OldText', 'NewText');
end;

SUNMOON
پنج شنبه 04 بهمن 1386, 15:06 عصر
جناب rassol_brn ممنون . با یه سری تغییرات کوچیک خیلی کارم راه افتاد . تنها مسل اینه که فرمtrichedit حتماً باید در حال نشون دادن باشه وگرنه کار نمیکنه(به خاطر فوکوس). به هر حال ممنون.