ورود

View Full Version : پیمایش کلمه به کلمه یک متن



saeed6162
شنبه 29 مرداد 1390, 15:57 عصر
سلام دوستان
متن طولانی رو که داخل richedit هست رو چطور میشه به تفکیک کلمات پیمایش کرد ، و هر لحظه کلمه ی جاری رو highlight کرد.

هدف : برای نوشتن یک برنامه تند خوانی که سرعت خواندن کلمات با چشم رو کنترل می کنه می خوامش.

ممنونم

MohsenB
شنبه 29 مرداد 1390, 21:35 عصر
سلام

این یه راهه سادس
فقط HideSelection از کنترل رو روی False قرار بده .
روی فرمم برای شروع کار دوتا دکمه قرار بده و این کدها رو توش بنویس :



var
Form1: TForm1;
sPos :Integer = 0;

procedure TForm1.btnNextClick(Sender: TObject);
var ePos :Integer;
tBuf :string;
begin
tBuf:= StringReplace(red1.Text, #$D#$A, #$D, [rfReplaceAll, rfIgnoreCase]);
ePos:= Pos(' ', Copy(tBuf, sPos+1, Length(tBuf))) + sPos;
red1.SelStart:= sPos;
red1.SelLength:= ePos - sPos - 1;
sPos:= ePos;
end;

procedure TForm1.btnResetClick(Sender: TObject);
begin
sPos:= 0;
end;

saeed6162
جمعه 11 شهریور 1390, 18:33 عصر
ممنونم از کد بسیار جالبتون ، اما خوب دو تا مشکل داره این کد ،
1- اگه انتهای یک سطر فقط کلید اینتر خورده باشد و ابتدای سطر بعد هم بدون فاصله شروع بشه ، آخرین کلمه سطر فعلی و اولین کلمه سطر بعد رو با هم انتخاب می کنه در حالی که دو تا کلمه جدا از هم هستند.
2- در انتهای متن حتما فاصله نیاز داره تا کلمه آخر رو هم نشون بده والا تا کلمه یکی مونده به آخر متن پیش میره.

ممنون میشم اگه این دو مشکل رو هم برطرف کنید.