المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: اداة جميلة ومميزات مذهلة اسمها Richedit1 و Memo
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi
Framework2

بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه


الاخوة الاعزاء

من منكم يعلم شيئا عن هاتين الاداتين الغبيتين
والمجنونتان
واحدها أسمها RichEdit1
والثانية اسمها Memo

ان أبناء عمومتها في الفجوال بيسك 6 والفجوال نت كانتا اكثر ذكاء بحيث كنت استخدم الخاصية Rtf
لاستخلاص النص منها واسناد النص اليها

ولكن الان حاولت ان اسند لها النص المخزن بقاعدة البيانات أكسس كالتالي:
sRichEdit1.Lines.Add( ADOTable1.FieldByName('code').Text) ;
ولكنها تظهر لي النص

[Memo]
بهذا الشكل

وحتى عن طريق الخاصية Text
وتكهنت ان الخاصية Line هي مثل الخاصية Rtf
علما بأن نوعية الحقل بقاعدة البيانات من النوع Memo

فمن له علم بها فيكتب لنا وصفة لها ونخرجها من المشفى
najy_zl
السلام عليكم...

الخاصية Text للكائن TField لا تعطيك القيمة المحفوظة في الحقل، بل النص أو التنسيق الذي يتم عرضه في المكون المرتبط بالحقل أثناء تحرير قيمة الحقل.
للحصول على القيمة المخزنة في الحقل استعمل الخاصية AsString للحقل أو الخاصية FieldValues للـ DataSet (أي الـ Table أو الـ Query) كالتالي:
انسخ الكود
  1. sRichEdit1.Text := ADOTable1.FieldByName('code').AsString;
  2. // أو
  3. sRichEdit1.Text := ADOTable1.FieldValues['code'];
  4. // أو
  5. sRichEdit1.Text := ADOTable1['code'];
  6.  

لاحظ في الطريقة الثالثة أنن حذفنا الخاصية FieldValues لأنها هي الخاصية الافتراضية للـ DataSet.
لاحظ كذلك أننا نستعمل القوسين المربعين [ ] مع الخاصية FieldValues.

نرجو الاستفادة و السلام.
Framework2


بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه



شكرا جزيلا وعلما وفيرا
ولكن
لم تجدي كل المحاولات نفعا
لاحظ يا اننا لا زلنا نستخدم الخاصية Text مع الاداة او المكون ونقوم بتغيير في خصائص الجدول او طريقة اتصاله بقاعدة البيانات
والمشكلة فعلا هي مع كيفية استقبال المكون لبيانات

ان كانت نص عادي استقبلها كنص عادي
وان كان النص منسق وجب استقبالها بطرقة خاصة هي اقرب الى التنسيق HTML
بحيث بعض النص لونه ازرق وبعضه اكبر من بعض وهكذا
واذا لم تخني ذاكرتي يتم استخدام Tstream او شئ كهذا مع المكون بحيث يستقبل البيانات تم يتم استنادها الى المكون

للاسف التعليمات وكل الكتب تتحدث عن الطريقة للقراءة من ملفات نصية من نوع
RTF or TEXT FILE

ولم تذكر الطريقة للقراءة من قاعدة بيانات
ولا اعلم

ولكن ربما لديكم حل ولكن لم تستخدموا هذه الطريقة من قبل فقط

وحتى ذلك الوقت سنبقي على هذه الاداتين تحت الحجز

والسلام
Framework2
السلام عليكم

ردوا علينا يا اهل العلم.......؟
قولوا لنا حتى صباح الخير على الاقل.

huh.gif

B.M.AbdelAziZ
إقتباس(Framework2 @ Nov 10 2008, 07:00 AM) *
من منكم يعلم شيئا عن هاتين الاداتين الغبيتين
والمجنونتان
واحدها أسمها RichEdit1
والثانية اسمها Memo

لا يوجد بدلفي مكونات غبية او مجنونة

ان كان تطبيقك قواعد بيانات وليد نص به اكثر من سطر استخدم:
DBMemo ان كان نص فقط وغير منسق
DBRichEdit ان كان نص منسق
طبعا الحقل المتصل بها يكون من نوع Blob
والسلام عليكم
Framework2


السلام عليكــم ورحمـة الله وبركاتــه

بصراحة الاداة هذه ليست مرنة
ولا اريد ان اقول ليست ذكية
فيبدو انها اثارات حساسية شديدة لمحبي الدلفي

وانا قد مدحت الدلفي كثيرا وهاجمت اللغات الاخرى بعدة مشاركات لي هنا بالمنتدى
ومع ذلك هذا لا يمنع ان نمدح اداة أخرى موجودة بلغات برمجة اخى

ومع ذلك ايضا انا متاكد ان هذه الاداة بالدلفي يمكنها فعل ذلك
ولكن كيف

الطريقة التي ذكرتها هنا فعلا تفيد ولكن ليس بالشكل المطلوب
فمثلا انا سوف استخدم الاداة SynEdit لاظهار الاكواد
وهي اداة مثل هذه تماما ولكنها مطورة او تم اضافة لها بعض الخصائص والاحداث الجديدة وتم حذف بعض الخصائص ومنها قدرتها على الاتصال بقاعدة البيانات مباشرة
من الممكن ان استقبل البيانات من قاعدة البيانات في الاداة DBRichEdit وبعد ذلك استخلص النص منها وارسله الى الاداة RichEdit العادية عن طريق الخاصية Text
وعملت بشكل سليم
ولكن اعتقد انها طريقة ملفقة وسيعمل البرنامج بشكل سليم حتى وان كان المستخدم لا يعلم ما الذي يجري بالخلفية

جربت هذه الاداة مع بيانات تم تخزينها بواسطة اداة RichEdit الموجودة في الفجوال نت وقد تعرفت على الوسوم بشكل ممتاز مما يعني انها وتلك الاداة من عائلة واحدة فعلا
والسؤال هو كيف اذا يمكن استخلاص البيانات من قاعدة البيانات لها مباشرة

فمثلا هذا نص منسق مخزن بقاعدة البيانات تعرفت عليه الاداة DBRcichEdit بسهولة وهو ليس مخزن بواسطتها او باختها Rcichedit العادية

كود
{\rtf1\fbidis\ansi\ansicpg1256\deff0\deflang1025{\fonttbl{\f0\fnil\fprq1\fcharset0 Courier New;}{\f1\fnil\fprq1\fcharset178{\*\fname Courier New;}Courier New (Arabic);}{\f2\fnil\fcharset0 Courier New;}}
{\colortbl;\red0\green0\blue255;\red0\green128\blue0;}
\viewkind4\uc1\pard\ltrpar\lang1024\f0\fs20  \cf1 Public\cf0  \cf1 Function\cf0  ReadTextFromFile(\cf1 ByVal\cf0  Filename \cf1 As\cf0  \cf1 String\cf0 ) \cf1 As\cf0  \cf1 String\f1\rtlch\par
\cf0         \cf2\f0\ltrch  ' Returns text from the specified file\f1\rtlch\par
\cf0         \cf1\f0\ltrch On\cf0  \cf1 Error\cf0  \cf1 Resume\cf0  \cf1 Next\f1\rtlch\par
\cf0         \cf1\f0\ltrch Dim\cf0  strFileText \cf1 As\cf0  \cf1 String\f1\rtlch\par
\cf0         \cf2\f0\ltrch  ' Open the file and launch StreamReader object\f1\rtlch\par
\cf0         \cf1\f0\ltrch Dim\cf0  MyReader \cf1 As\cf0  System.IO.StreamReader = _\f1\rtlch\par
        \f0\ltrch System.IO.File.OpenText(Filename)\f1\rtlch\par
        \cf2\f0\ltrch  ' Read all text through to the end\f1\rtlch\par
\cf0         \f0\ltrch strFileText = MyReader.ReadToEnd\lang1033  \par


وطالما تعرفت عليه فهذا يعني انها تستطيع ان تخزن مثله كذلك.
وعن طريق الخاصية Text or Line or GetText
لم يفلح الامر وتخزنه كنص عادي

وهذه الاداة باللغات الاخرى تخزن وتستقبل النص المنسق عن طريق الخاصية RTF
ولذلك قلت انها اكثر ذكاء
والاداة ذكاءها من ذكاء مبرمجها

لذلك اردت توظيحا من خبراء الدلفي لما يجري

والسلام عليكم


B.M.AbdelAziZ

مشكلتك انك لاتزال تفكر بمنطق VB
ارفق محاولتك لكي يمكن مساعدتك
والسلام عليكم
Framework2
السلام عليكــم ورحمـة الله وبركاتــه

إقتباس
مشكلتك انك لاتزال تفكر بمنطق VB
ارفق محاولتك لكي يمكن مساعدتك
والسلام عليكم




جميل جدا
صحيح لا زالت أفكر من منطق الفجوال
وهذا هو السبب

وشكرا كثيرا أخ محمد
ولكن لا اعلم ما الذي حدث وانما تم الامر بشكل سليم
كيف لا اعرف.
وانما قبلت الاداة النص من قاعدة البيانات مباشرة

انسخ الكود
  1.  
  2.  
  3. procedure TForm2.ToolButton1Click(Sender: TObject);
  4. begin
  5.  
  6. form1.Caption:='New Code';
  7. SynMemo1.Clear;
  8. edit2.Clear ;
  9.  
  10. procedure TForm2.ToolButton2Click(Sender: TObject);
  11. begin
  12. form1.ADOTable1.Open;
  13. form1.ADOTable1.Insert;
  14. form1.ADOTable1.FieldByName('groubname').Value:= form1.TreeView1.Selections;
  15. form1.ADOTable1.FieldByName('itemname').Value:= Edit2.Text;
  16. form1.ADOTable1.FieldByName('code').Value:= SynMemo1.Lines.GetText ;
  17.  
  18. form1.ADOTable1.Post;
  19. form1.ADOTable1.Close;
  20.  
  21.  


تم استخدام الخاصية GetText لاستخلاص البيانات
وعند الرغبة في اسناد بيانات الحقل الى الاداة تم استخدام الخاصية Value الخاصة بالـ AdoTabel والخاصية Text للاداة SynMemo
وطبعا تم تخزينها كنص عادي وهو المهم بالنسبة لي لان الاداة SynMemo تقوم هي بتنسيق النص بدلا مني ولا تحتاج الا الى نص برمجي عادي غير منسق
في البداية كنت اخشى ان لا يتم كتابة كل سطر تحت السطر الذي يليه حسب ما هو مرتب وكما بالشكل ويتم وضع السطر الاول تم وبنهايته يتم وضع السطر الثاني وهكذا
وهذا ما كان يجري في الفجوال بحال استخدام نص عادي غير منسق

ولكن لكل برنامج منطقه الخاص ولذلك تم وضع كل سطر في مكانه حتى بحال تمدد الاداة مع تكبير النموذج.

والغريب ان النص في قاعدة البيانات يظهر ملتحم مع بعضه والاسطر متسلسلة ببعض وعند استخلاصها بالاداة يتم ترتيب الاسطر فوق بعض بشكل طبيعي.
سادرس الموضوع وارفق مثال هنا إن شاء الله للاستفادة

والله الموفق





هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.