PDA

View Full Version : 2 مشکل با RichEdit



saeed6162
شنبه 29 مرداد 1390, 14:34 عصر
سلام دوستان
مشغول نوشتن یک برنامه تندخوانی هستم، باید از کامپوننت richedit استفاده کنم:
دو تا مشکل دارم باهاش:
1- اینکه چرا نمیشه رنگ پس زمینه متن بهش داد ، یعنی میشه داد ولی اعمال نمیشه و نشون داده نمیشه
من اینکارو کردم:

RichEdit1.Brush.Color:=clRed;

اما موقع نوشتن متن انگار یه رنگ قرمز پرپر میزنه و تو پس زمینه متن اعمال نمیشه!!

2- می خوام کلمه های موجود در richedit رو که احتمال داره طولانی باشه ، کلمه به کلمه پیمایش کنم و هر لحظه کلمه ی جاری رو با رنگی متفاوت نشون بدم کدی که نوشتم اینه، اما دست عمل نمی کنه، می دونم دلیلش به خاطر کارکترهای کنترلی 10 و 13 هست اما 3 روزه مشغولشم به نتیجه ای نرسیدم ، به نظر شما چطور می تونم کلمه ها رو صحیح پیمایش کنم ؟



Const
Separator = #13+' '+#10 + #9 ;
Var
Form1: TForm1;
Counter,DEC:Integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.DefAttributes.Color := RichEdit1.Color;
Counter:=1;
Dec:=0;
Timer1.Enabled:=not Timer1.Enabled;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
Var I:Integer;
begin
while Pos(RichEdit1.Lines.Text[Counter],Separator)<>0 do
begin
if (RichEdit1.Lines.Text[Counter]=#$D)and(RichEdit1.Lines.Text[Counter+1]=#$A) then
Inc(Dec);
Inc(Counter);
end;

RichEdit1.SelStart:=Counter-1-DEC;
for I := Counter to Length(RichEdit1.Lines.Text) do
if pos(RichEdit1.Lines.Text[i],Separator)<>0 then
begin
Counter:=i;
Break;
end;

RichEdit1.SelLength:=Counter-RichEdit1.SelStart-1;
RichEdit1.SelAttributes.Color:=clBlack;
end;





نکته : یک کلمه ی طولانی بنویسید که تو سطر اول جا نشه و باقیش به سطر دوم بره ، و برنامه رو تست کنید، به نظر شما راه مناسبی رو برای این کار انتخاب کردم یا راه مناسب تری هم وجود داره؟

saeed6162
شنبه 29 مرداد 1390, 15:28 عصر
1- اینکه چرا نمیشه رنگ پس زمینه متن بهش داد ، یعنی میشه داد ولی اعمال نمیشه و نشون داده نمیشه

جواب سوال اولمو پیدا کردم ، میذارم تا دوستان هم اگه به این مشکل برخورد کردند استفاده کنند :

http://www.swissdelphicenter.ch/en/showcode.php?id=1438