PDA

View Full Version : highligh و جستجو در متون Memo



آیدا رضایی
دوشنبه 28 فروردین 1385, 17:03 عصر
سلام دوستان .
میخواستم بدونم چطور میشه یک کلمه درون کنترل Memo رو Highlight کرد .
مثلا در یک Memo تمامی کلمه های "علی" رو highlight کنه و به یک دکمه های عمل Find Next و Find Pr رو شبیه سازی کرد .
از دوستان ممنون میشم کمکم کنن .
خیلی درگیرش .
اگه این موضوع هم قبلا عنوان شده لطف کنن و لینک اون تاپیک رو به من هم بدن .
ممنون از همه .

mzjahromi
دوشنبه 28 فروردین 1385, 19:14 عصر
تا اونجا که من می دونم با Memo نمیشه ولی با RichEdit میشه
http://www.barnamenevis.org/forum/showthread.php?t=40105&highlight=richedit

shobair
سه شنبه 29 فروردین 1385, 07:14 صبح
سلام
با متد SelStart و SelLength میشه
اولی شروع و دومی طول قسمتی هست که می خواهید HighLight کنید
شبیر

mzjahromi
سه شنبه 29 فروردین 1385, 07:25 صبح
سلام
با متد SelStart و SelLength میشه
اولی شروع و دومی طول قسمتی هست که می خواهید HighLight کنید
شبیر

اونوقت با Memo این کار رو میشه انجام داد؟
اگر منظور شما فقط Select کردنه آره
ولی اگه بخوان کل کلمه های علی رو انتخاب کنن با این دو دستور نمیشه.

آیدا رضایی
سه شنبه 29 فروردین 1385, 17:49 عصر
جالا من چطوری تمام کلمه های علی رو Select کنم ؟
چطوری متدی مثل Find Next درست کنم که بره اول کلمه علی دیگه ؟ .

mzjahromi
سه شنبه 29 فروردین 1385, 17:57 عصر
خود RichEdit تابع FindNext داره

حسن رفیعی
سه شنبه 29 فروردین 1385, 18:14 عصر
اگر فقط سلکت کردن باشد فرقی ندارد چه memo چه RichEdit می شود ولی اگر بخواهید متن مورد نظر را رنگی نمایید فقط داخل RichEdit می توانید
خیلی راحت می توانید این کار را انجام دهید.
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
begin
with RichEdit1 do
begin
{ begin the search after the current selection if there is one }
{ otherwise, begin at the start of the text }
if SelLength <> 0 then

StartPos := SelStart + SelLength
else

StartPos := 0;

{ ToEnd is the length from StartPos to the end of the text in the rich edit control }

ToEnd := Length(Text) - StartPos;

FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
if FoundAt <> -1 then
begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindDialog1.FindText);
end;
end;
end;