delphi4arab منتديات دلفي للعرب

نسخة كاملة : عرض عدد الأحرف في TRichEdit
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم

السلام عليكم ..

كيف يمكن عرض طول محتويات مكون TRichEdit باستثناء الأسطر ؟

انا مثلا استخدمت الكود التالي :

كود :
label1.Caption := 'text length: ' + inttostr(length(richedit1.text));

وعند كتابة الأسطر التالية في TRichEdit
1
2
3
4
ينتج في أداة Label القيمة 10
لاحظت هنا انه يعرض قيمة = (عدد الأسطر × 3) - 2 .
مثلاً : ((4 × 3) -2) = 10

وعند كتابة :
1
22
333
44
ينتج في أداة Label القيمة 14
هنا عرض قيمة = ((عدد الأسطر × 3) - 2) + (عدد الأرقام التي في كل سطر - 1) .
مثلاً : ((4 × 3) - 2) + ((1-1)+(2-1)+(3-1)+(2-1)) = 14

فهل هناك دالة لاستخراج عدد المحارف في أداة TRichEdit ??؟
وعليكم السلام ورحمة الله
Length تعيد عدد المحارف وكذلك الدالة GetTextLen أسهل للاستعمال:
PHP كود :
ShowMessage(IntToStr(RichEdit1.GetTextLen)); 
غاية ما في الأمر هو أن كل سطر ينتهي برمز المرور إلى السطر الموالي (يعني رمز الزر Enter وهو 13#)
وبالتالي تحسب = (عدد الأحرف + رمز الانتقال للسطر الموالي) لكل سطر
وإذا لم يكن للسطر سطر آخر يليه، فلا يوجد إذا رمز 13#
مع التنبيه أن الفراغ يحسب حرفا أيضا.
وبالتالي إذا أردت عدد المحارف فما عليك إلا أن تحسب الإجمالي وتطرح من كل سطر 1، ما عدا السطر الأخير، مع حذف الفراغ، يمكنك الاستعانة بـ Trim.
أو تكتب شيء مثل:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
i, Len: Integer;
begin
  
for i := 0 to RichEdit1.GetTextLen do
    if 
UpCase(RichEdit1.Text[i]) in ['A'..'Z'] then
      Inc
(Len);
  
ShowMessage(IntToStr(Len));
end; 
بالتوفيق.
جزاك الله خيراً أخي , لكن الكود يجب أن يكون بالشكل التالي (حيث انك لم تعين قيمة المتغير Len المبدئية) :

كود :
var i, Len: Integer; begin Len := 0 ; for i := 0 to RichEdit1.GetTextLen do if UpCase(RichEdit1.Text[i]) in ['A'..'Z'] then Inc(Len); ShowMessage(IntToStr(Len));