مشروع برنامج محادثة, باستخدام مكونات indy
#41

إقتباس :بخصوص قآعدة البيانات, (لا ادري حقيقة لكن هي الشئ الوحيد الذي يقلقني)
لا تقلق، امرها سهل ان شاء الله
ليس شرطا انشاء كل الجداول الان
يمكن التعديل/التغيير فيما بعد حسب الحاجة
بعض الجداول الخاصة بالعضو يمكن وضعها بClient لتقليل الضغط على Server
الرد
#42
خير ان شاء الله, بارك الله لك اخ عبد العزيز,

اخوآني في الحقيقة لدي سؤآل آخر ايضى بارك الله لكم,
فيما يخص التعامل مع البرنامج بطريقة ال Layers (لم اتعامل بهذه الطريقة من قبل)

هل يعني هذا انه كل شئ مثلا يخصّ ال IdTcpClient يكون في وحدة ال UClientCore ؟

للتوضيح, لو اود ان احدد ال Host و Port ومنثم عمل Connect لل كلينت, اين يتم كل هذه الأمور ؟

هل يجب مثلا عمل Procedure في uClientCore به تحدد الأمور مثل الهوست و البورت ومنثم في ال D4A_Client_Main يتم استدآء هذا ال Procedurre وبعدها عمل Connect في D4A_Client_Main؟

بارك الله لكم
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#43
السلام عليكم


التغييرات التي تمت على D4A Chat بتاريخ 28-1-2010

+إضافة نظام للكشف الذاتي عن السرفر (لا يعمل الأن بحاجة إلى نظام أخر للكشف عن الأيبيات و لكن يمكن تجربته بحال معرفة أي بي السرفر)
+إضافة بعض الخيارات (اسم السرفر)
+العمل على قاعدة البيانات قليلا (من ناحية الفتح و الإغلاق و الإنشاء)
+بناء نافذة التسجيل في الكلاينت
+بناء نافذة للسرفرات الموجودة
*القليل من التحسينات

سلامي


الملفات المرفقة
.rar   Delphi4arab_Chat_05.rar (الحجم : 114.48 ك ب / التحميلات : 288)
الرد
#44
AL-MOB4RM3G كتب :هنا ايضى سؤآل,
فيما يخص حالة السرفر كان هناك shape يعطي الّون الأخضر او الأحمر على الفورم حسب الحآلة,
ارى انك اخي الكريم عدلت حتى يتم انشآء ال Shape في وقت التنفيذ,
السؤآل هو, هل هو افضل من النآحية العمليّة ؟
يعني اسرع بالنسبة لتنفيذ الكود مثلا ؟ ام من نآحية التنظيم ؟ او شئ آخر؟

لأني اضطررت لوضع ال TShape في ال StatusBar و التعليمة يجب أن تكون من ناحية ال Parent و لكن حاولت وضعها في Design Mode و لكن لم افلح هذا السبب فقط

AL-MOB4RM3G كتب :بخصوص قآعدة البيانات, (لا ادري حقيقة لكن هي الشئ الوحيد الذي يقلقني)

لا تقلق أخي الكريم دعنا نعمل بالقاعدة التي بين أيدينا الأن و بعدها نتطور حسب الحاجة

AL-MOB4RM3G كتب :هل يعني هذا انه كل شئ مثلا يخصّ ال IdTcpClient يكون في وحدة ال UClientCore ؟
للتوضيح, لو اود ان احدد ال Host و Port ومنثم عمل Connect لل كلينت, اين يتم كل هذه الأمور ؟
يعني كل ما يتعلق بالاتصال يتم في هذه الوحدة فقط و كل ما يتعلق بالداتا يكون بوحدة الداتا و يتم التواصل بين الوحدات
يعني نحدد ال IP و ال Port في الوحدة الأساسية (أو بوحدة الكشف عن السرفر ) و عندها نرسل لوحدة الكلاينت امر الاتصال و عندها تقوم وحدة الاتصال بالاتصال

و الجواب الشافي عن أخي خالد و أخي عبد العزيز
الرد
#45
إقتباس :أني اضطررت لوضع ال TShape في ال StatusBar و التعليمة يجب أن تكون من ناحية ال Parent و لكن حاولت وضعها في Design Mode و لكن لم افلح هذا السبب فقط

اها, طيب خير,
--
اخي الكريم o15s19, اي نسخة من الويندوز تستخدم ؟ (هل تجلس على 7؟) بارك الله لك

سأعود بعد جوآبكSmile
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#46
تصحيح خلل في المقآرنة عند انشآء مستخدم جديد,

في الكود, في الفورم NewUserFrm
كود :
procedure TNewUserForm.SpeedButton1Click(Sender: TObject);//Register begin if NameEdt.Text = '' then //Check User Name begin NameEdt.Color := $008080FF ; Exit ; end; if (PwdEdt1.Text <> PwdEdt2.Text) OR (PwdEdt1.Text = '' ) then //Check Password begin PwdEdt1.Color := $008080FF ; PwdEdt2.Color := $008080FF ; Exit ; end; if EmailEdt.Text = '' then //Check Email begin EmailEdt.Color := $008080FF ; Exit ; end; // Start Registration Process Here end;

هناك خطأ يحدث مع الألوان,
في حآلة المقآرنة التي تتم بين ال Password1 و ال Password2 ويكون هناك خلل تصبح حينها ال Edit 1 و 2 بالون الأحمر, في حآلة تصحيح الخلل من PassWord2 لا يرجع الون الى الأبيض حتى بعض الضغط على التسجيل,

الحلّ, كتآبة الكود التآلي,
كود :
procedure TNewUserForm.SpeedButton1Click(Sender: TObject);//Register begin if NameEdt.Text = '' then //Check User Name begin NameEdt.Color := $008080FF ; Exit ; end; if (PwdEdt1.Text <> PwdEdt2.Text) OR (PwdEdt1.Text = '' ) then //Check Password begin PwdEdt1.Color := $008080FF ; PwdEdt2.Color := $008080FF ; Exit ; end else begin // ----------------- هنا كان الخلل, PwdEdt1.Color := $00ffffff ; PwdEdt2.Color := $00ffffff ; end; if EmailEdt.Text = '' then //Check Email begin EmailEdt.Color := $008080FF ; Exit ; end; // Start Registration Process Here end;

او استغلال ال PwdEdit 2 onChange ووضعه كما هو في الإدين الأول,
كود :
procedure TNewUserForm.PwdEdt2Change(Sender: TObject); begin PwdEdt1.Color := ClWhite ; PwdEdt2.Color := ClWhite ; end;

وسآمحني لآنني وضعت الحلّ هنا, لكن لا استطيع رفع المشروع الى المنتدى حآليّا, والسبب ستعرفه في سؤآلي في المشآركة السآبقة,

بالتوفيق اخوآني,
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#47
السلام عليكم

مرفق مثال لبرنامج مقسم إلى عدة طبقات أو واجهات.

المثال مبني على مشروع برنامج المحادثة، الذي نحن بصدده، وقد تم تقسيمه كالتالي:

طبقة العرض Presentation و المتمثلة في واجهات الشاشة Forms ،
وهي مسئولة فقط عن استقبال المدخدلات من المستخدم و عرض البيانات له. مثال لها نموذج frmChatServer .

طبقة التطبيق Application و هو مسئول عن قيود ومنطقيات البرنامج Business Rules
وهو عادة الحلقة الرئيسية التي تربط بين مكونات البرنامج، و يمثلها في مثالنا هذا وحدة : uAppManager .

طبقة الشبكات أو الاتصال، وهي مسئولة عن كل ماله علاقة بالاتصالات في البرنامج وقد تم
التعبير عنها في الوحدة: uNetManager . ولأنني افترضت احتمال استخدام أكثر من تقنية
في الاتصال أو تغييرها مستقبلا فإن هذه الوحدة تحوي فقط الاستدعاءات العامة الخاصة
بالاتصال، أما التفصيلات الفنية الخاصة بالتعامل مع كل تقنية؛ فيتم تفويضها لوحدات خاصة
بها، و في مثالنا هذا ستكون الوحدة: uNet_INDY مختصة باستخدام مكونات Indy بينما
الوحدة: uNet_Socket تختص باستخدام مكونات Internet التي تأتي مع دلفي. ومع كل تقنية
إضافية أو باقة أخرى من مكونات الاتصال يفرد لها وحدة خاصة بها.

لم أتطرق لقواعد البيانات في هذا المثال، ولكن تنفيذها سيكون على نفس منوال طبقة الاتصال.
**** أن يكون هذا واضحا لشرح الفكرة.


الملفات المرفقة
.rar   ChatLayerExample.rar (الحجم : 4.91 ك ب / التحميلات : 168)
الرد
#48
عفوا، المرفق السابق بصيغة zip ، فقط غير اسم امتداد الملف.
الرد
#49
طيب جميل اخي الشقروني, اطلعت على المثآل الذي ارفقته, وأظن انني في الطريق الصحيح,

في الحقيقة اوآجه صعوبة (عآمة وليس فقط في هذا المشورع) من فهم افكآر الآخرين :unsure:, ربما لقلّة خبرتي والله اعلم, + انني لست معتاد على التنظيم, ففي مشروعاتي كلها يكون ال buttons على شكل Button 1,2,3,,, , و الى آخره,

امّا بخصوص سؤآلي عن النظام اخي o15s19 فهو بسبب ال encoding لملفّات ال Pas, لذلك لا استطيع ان ارى الأحرف العربيّة بها, ان كنت تعمل على ويندوز 7 فهي سهلة التصليح,

بالتوفيق,
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#50
السلام عليكم

التغيرات الحاصلة على البرنامج بتاريخ 31-1-2010

+تم تحويل السفر بكامله ليصبح 100% معتمدا على الطبقات(ألف شكر لأخي خالد)
+تم توسيع خيارات السرفر و أصبح بالأمكان ربط السرفر بأي بي معين
+تم دعم نظام الكشف التلقائي (أصبح يعمل الأن من ناحية السرفر)
+وضع ألية لكشف الأي بيات تلقائيا و كشف اسم الجهاز ليستخدم كاسم للسرفر
+القليل من التحسينات المرئية


قائمة الامور الواجب عملها أولا
1)دعم الكلاينت ليستخدم الأي بي المكتشف من نظام الكشف التلقائي
2)وضع نظام لحفظ الإعدادات لكلا السرفر و الكلاينت
3)تجهيز قاعدة البيانات


سلامي


الملفات المرفقة
.rar   Delphi4arab_Chat_06.rar (الحجم : 118.68 ك ب / التحميلات : 264)
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 5 ) ضيف كريم