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;
نکته : یک کلمه ی طولانی بنویسید که تو سطر اول جا نشه و باقیش به سطر دوم بره ، و برنامه رو تست کنید، به نظر شما راه مناسبی رو برای این کار انتخاب کردم یا راه مناسب تری هم وجود داره؟
مشغول نوشتن یک برنامه تندخوانی هستم، باید از کامپوننت 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;
نکته : یک کلمه ی طولانی بنویسید که تو سطر اول جا نشه و باقیش به سطر دوم بره ، و برنامه رو تست کنید، به نظر شما راه مناسبی رو برای این کار انتخاب کردم یا راه مناسب تری هم وجود داره؟