المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : سلسلة رقم 2 تصميم إسطوانة قرآن كريم


عبود عبود
01-02-2016, 09:54 PM
السلام عليكم ورحمة الله وبركاته

http://i.imgur.com/Fl8Z6JK.gif

سلسلة رقم 2 تصميم إسطوانة قرآن كريم




إخوانى أعضاء وزوار المنتدى الكرام أقدم لكم سلسلة رقم 2 لشرح تصميم إسطوانة قرآن كريم وذلك لمحاولة تبسيط شرح بعض الطرق وبعض الأكواد الممكن إستخدامها فى هذا العمل
محتويات هذا الشرح هو لإستكمال السلسلة السابقة سلسلة رقم 1 لشرح تصميم إسطوانة قرآن كريم (http://www.abc4web.net/vb/showthread.php?t=33143) والإضافة إلى ما تقدم طريقة عمل تشغيل متتالى للآيات والسور وتشغيل من البداية أو من بداية أول سورة بعدما يتم الوصول إلى آخر سورة أو آخر آية وهذا أيضا يعتبر تشغيل متواصل أو متتالى
أيضا يجب أن نفرق دائما بين مصطلح التشغيل المتتالى ومصطلح التكرار للآيات أو السور فكلاهما سوف نتناولة بالشرح التدريجى


نبدأ إن شاء الله



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

http://i.imgur.com/2dxLQmN.gif

نموذج تصميم برنامج قرآن كريم (https://dl.dropboxusercontent.com/u/29881160/نموذج تصميم برنامج قرآن كريم2.rar)


بعد تحميل الملف المفتوح السابق سوف ندخل إلى خصائص وأحداث عنصر الميديا بلير حيث هو العنصر الذى سوف يقوم بمهمة التشغيل المتتالى بعد نهاية كل آية والإنتقال أوتوماتيكيا إلى الآية التالية والسورة التالية بعد نهاية قراءة السورة الحالية أيضا بشكل أوتوماتيكيا

ترتيب الأفكار لوضع الأكواد اللازمة لهذه المهمة هو :
1- نريد معرفة عدد الآيات التى تحتويها السورة المختارة من قبل الضغط والإختيار من السور المكتوبة فى عنصر "Tree" فى كل مرة يتم تشغيل عنصر الميديا بلير .
2- بعد معرفة عدد آيات السورة المحددة يصبح من السهل جدا وضع شرط عند نهاية قراءة الآية الحالية أن نزيد رقما ليعبر عن الآية التالية .
3- مطلوب البحث عن المكان الصحيح الذى نضع فية أكوادنا التى نتحكم بها فى عمل البرنامج بشكل مناسب ودقيق كلما أمكننا ذلك وتتم هذه العملية بالتجربة والفهم الصحيح .
التطبيق العملى على الملف المفتوح السابق :
نذهب إلى أحداث عنصر الميديا بلير ونضع فى الحدث "On Play" الكود التالى :

soura_files = File.Find("AutoPlay\\Docs\\"..soura, "*.mp3", false, false, nil, nil);

فائدة الكود السابق هو إيجاد أو البحث عن جميع الملفات الصوتية ذات الإمتداد "mp3" فى مجلد السورة التى تم إختيار تشغيل آياتها وتخزين نتيجة البحث على شكل مصفوفة أو جدول فى حالة العثور على ملفات بداخل مجلد السورة المحددة وإذا لم يجد سوف يكون الناتج المخزن هو nil ووضعنا هذا الكود فى هذا الحدث من أحداث عنصر الميديا بلير نظرا لأنه الأنسب والأدق عن تجربة منى .
بعد ذلك نذهب إلى الحدث الأهم وهو "On Finish" فى أحداث الميديا بلير ونضع كود يتحقق من وجود ملفات أو كود شرطى فى حالة وجود ملفات صوتية بداخل مجلد السورة يعمل على الحصول على عددها فكما ذكرنا أن الملفات فى حالة العثور عليها تخزن جميعا كمصفوفة بدخل المتغير السابق الذى كان soura_files والذى وضعناه فى الحدث "On Play"

--
if soura_files~=nil then
count = Table.Count(soura_files);


بالكود السابق يتم معرفة عدد الملفات الصوتية فى حالة العثور عليها فى مجلد السورة المحددة وتخزين القيمة العددية فى المتغير count
بعد ذلك نستطيع عمل مقارنة بسيطة وشرطية فى حالة إختيار آية معينة فإذا وجد أن رقم الآية التى تعمل على عنصر الميديا بلير أقل من العدد الكلى لآيات السورة المحددة
يتعرف العنصر على الآية الجديدة أو رقمها الذى نريد أن نزيد علية رقما ليكون بهذا هو المطلوب لتشغيل الآية التالية أو الآية الجديدة أو السورة الجديدة فيكون الكود المستخدم هو التالى :

--
if String.ToNumber(aya) < count then
new_aya = String.ToNumber(aya)+1 ;

وفى الكود السابق سيتم تخزين رقما جديدا معبرا عن رقم الآية التالية المراد تشغيلها عند الإنتهاء من قراءة الآية الحالية وقد إستخدمنا كود لتحويل نص المتغير aya إلى رقما وإضافة رقم 1
بالأكواد السابقة لدينا رقما جديدا معبرا عن الآية الجديدة التى سيعمل الميديا على تشغيلها بعد الحالية فيمكن بهذا أن نستخدم كودين كالتالى :

--
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);
MediaPlayer.Load("Plugin1", "AutoPlay\\Docs\\"..soura.."\\"..new_aya..".mp3");

الكودين السابقين أحدهما أمر يوجه إلى عنصر الشجرة "Tree" يطلب منه أن يعمل على إختيار أو تحديد الآية الجديدة فى السورة التى يقرأها عنصر الميديا بلير وبشكل تلقائى
أما الكود الثانى فهو أمر تشغيل الآية الجديدة بعد إنتهاء الآية الحالية فى عنصر الميديا بلير بشكل تلقائى متتالى .


--
elseif String.ToNumber(aya) == count then
for i=1,114 do
Tree.SetNode("Tree1", soura, {Expanded=false});
end

الكود السابق هو جملة شرطية نطلب منها فى حالة تساوى رقم الآية المنتهية قراءتها فى عنصر الميديا أو كما هو كتبناه الآية المحدد بواسطة عنصر "tree" حيث أن عنصر "Tree" يعمل بشكل تلقائى أيضا متتالى فإن أحد المتغيرات التى كتبناها فية كان المتغير aya
إذا تحقق شرط المساواه لرقم الآية مع المجموع العددى أو الكلى لآيات السورة يعمل على إغلاق نطاق السورة التى تم الإنتهاء من قراءتها بالكامل قراءة متتالية
يمكنك ملاحظة مايحدث عند الإنتهاء إذا نظرت إلى عنصر "Tree" فترى أن الآيات للسورة تم إخفاء ظهورها وقد وضعت حلقة تكرارية لعمل هذا أو تطبيق هذا من 1 إلى 114
والرقم 114 هو طبعا لإجمالى عدد سور القرآن الكريم " يعنى أنا وضعت الحلقة والأكواد للمستقبل ولمن حاول التجربة يجد الأكواد صالحة لجميع آيات و سور القرآن الكريم "

--
soura=tonumber(soura)+1;
Tree.SetSelectedNode("Tree1", soura);
Tree.SetNode("Tree1", soura, {Expanded=false});
new_aya = 1 ;
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);
MediaPlayer.Load("Plugin1", "AutoPlay\\Docs\\"..soura.."\\"..new_aya..".mp3");

السطر الأول هو لوضع قيمة جديدة للسورة الجديدة المراد تشغيلها بعد الإنتهاء من قراءة آيات السورة الحالية بالكامل فيعمل على زيادة رقم على السورة الحالية ويخزن كرقم جديد معبرا عن السورة الجديدة أو التالية فى المتغير soura
السطر الثانى يعمل على إختار تلقائى فى عنصر الشجرة أو إنتقال تلقائى للسورة التالية
السطر الثالث فائدتة هو فتح النطاق للسورة التالية لإظهار آياتها فى العنصر "Tree" راقب العمل أثناء المعاينة تجد فى حالة إضافة سورة أخرى مع سورة الفاتحة تجد التغيرات المقصودة
السطر الرابع هو لإعادة قيمة المتغير new_aya إلى الرقم 1 لأننا بدأنا سورة جديدة بعد إنتهاء السورة الحالية وعلى ذلك السورة الجديدة أيضا ملفاتها الصوتية مبتدأه من الرقم 1 وحتى نهاية آياتها أى كان عدد آياتها المهم جميع السور تبدأ آياتها من الرقم 1 كملف صوتى فى مجلدها الخاص بها
السطر الخامس يعمل على إختيار أو الإنتقال التلقائى أيضا لتشغيل الآية التالية فى السورة الجديدة بحسب عدد آياتها تشغيلا متتاليا
السطر السادس يعمل على إعطاء أمر تشغيل تلقائى متتالى لعنصر الميديا بلير للآية الجديدة من السورة الجديدة .

فيصبح الكود كاملا فى الحدث "On Finish" فى أحداث الميديا بلير كالتالى :

--
if soura_files~=nil then
count = Table.Count(soura_files);
if String.ToNumber(aya) < count then
new_aya = String.ToNumber(aya)+1 ;
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);
MediaPlayer.Load("Plugin1", "AutoPlay\\Docs\\"..soura.."\\"..new_aya..".mp3");
elseif String.ToNumber(aya) == count then
for i=1,114 do
Tree.SetNode("Tree1", soura, {Expanded=false});
end
soura=tonumber(soura)+1;
Tree.SetSelectedNode("Tree1", soura);
Tree.SetNode("Tree1", soura, {Expanded=false});
new_aya = 1 ;
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);
MediaPlayer.Load("Plugin1", "AutoPlay\\Docs\\"..soura.."\\"..new_aya..".mp3");
end
end



:abc_156: فى المثال المفتوح التالى يوضح جميع الأكواد السابق شرحها ويعمل بشكل ممتاز متتالى يمكنك الإطلاع علية وعمل المعاينة لترى النتيجة بنفسك


http://i.imgur.com/2dxLQmN.gif

نموذج تصميم برنامج قرآن كريم (https://dl.dropboxusercontent.com/u/29881160/نموذج تصميم برنامج قرآن كريم3.rar)

http://i.imgur.com/NahjYou.gif

:abc_156: وهذا ملف مفتوح يحتوى على سورة الفاتحة وسورة الناس ويمكن إضافة المزيد :
طبعا من المفترض أن أضع سورة الناس فى فولدر بإسم 114 وليس كما وضعتها بهذا المثال فى الفولدر 2 والسبب أنى وضعتها فى فولدر 2 هو عدم إمتلاكى الوقت الكافى حاليا لوضع جميع السور مرتبة وأيضا عدم إمتلاكى الوقت لتقطيع جميع السور القرآنية إلى آيات منفردة فكان هذا مجرد مثال للتوضيح
وطبعا هذا لن يؤثر على تشغيل السورة بالشكل السليم فى هذا المثال ألقى نظرة على هذا المثال :


http://i.imgur.com/2dxLQmN.gif

نموذج تصميم برنامج قرآن كريم (https://dl.dropboxusercontent.com/u/29881160/نموذج تصميم برنامج قرآن كريم4.rar)


http://i.imgur.com/NahjYou.gif

يتبقى لنا المرحلة الأخيرة للتشغيل المتتالى وهى بمجرد الوصول إلى آخر آية من آخر سورة موجودة فى العنصر "Tree" أن يتم التشغيل من البداية أى من أول سورة وهى سورة الفاتحة مرة أخرى وهكذا إلى مالا نهاية ..............

تتم هذه العملية بنجاح بزيادة بسيطة جدا فى الأكواد الموجودة فى الحدث "On Finish" وهذه الزيادة عبارة عن جملة شرطية عند تحققها تتم هذة العملية
الجملة الشرطية تبدأ بالكود التالى :

if soura==3 then

وفائدة هذا الكود السابق هو إذا كانت السورة التالية تساوى إجمالى عدد السور الموضوعة فى البرنامج أو فى المثال السابق + 1
فى مثالى السابق كان عدد السور هو 2 فقط لذلك يكون الشرط كما هو موضح أعلاة
فعند تحقق هذا الشرط فعلا سوف يتم تنفيذ الكود التالى :

--
soura=1;
Tree.SetSelectedNode("Tree1", soura);
Tree.SetNode("Tree1", soura, {Expanded=false});
new_aya = 1 ;
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);

السطر الأول هو تعريف المتغير soura المعبر عن السورة التالية بعد الإنتهاء من قراءة السورة الحالية كاملة بأن السورة الجديدة المراد الإنتقال إليها ستكون هى السورة رقم 1
السطر الثانى يعطى أمر إختيار أو إنتقال إلى السورة فى العنصر "Tree" بشكل تلقائى
السطر الثالث يعطى أمر إظهار لآيات السورة التى سيتم تشغيلها والإنتقال إليها بشكل تلقائى
السطر الرابع هو تعريف المتغير new_aya والمعبر عن الآية الجديدة التى سيتم الإنتقال إليها فى السورة الجديدة التى تم الإنتقال إليها بأنها ستكون الآية رقم 1
السطر الخامس هو أمر موجه إلى عنصر "Tree" لإختيار أو الإنتقال إلى الآية الجديدة طبعا بشكل تلقائى .


فيصبح الكود بالكامل الواجب وضعة فى الحدث "On Finish" فى أحداث الميديا بلير هو كالتالى :

--
if soura_files~=nil then
count = Table.Count(soura_files);
if String.ToNumber(aya) < count then
new_aya = String.ToNumber(aya)+1 ;
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);
MediaPlayer.Load("Plugin1", "AutoPlay\\Docs\\"..soura.."\\"..new_aya..".mp3");
elseif String.ToNumber(aya) == count then
for i=1,114 do
Tree.SetNode("Tree1", soura, {Expanded=false});
end
soura=tonumber(soura)+1;
Tree.SetSelectedNode("Tree1", soura);
Tree.SetNode("Tree1", soura, {Expanded=false});
new_aya = 1 ;
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);
MediaPlayer.Load("Plugin1", "AutoPlay\\Docs\\"..soura.."\\"..new_aya..".mp3");
end
end

if soura==3 then
soura=1;
Tree.SetSelectedNode("Tree1", soura);
Tree.SetNode("Tree1", soura, {Expanded=false});
new_aya = 1 ;
Tree.SetSelectedNode("Tree1", soura.."."..new_aya);
end



إليك أخى وعزيزى القارئ المثال المفتوح الذى من خلالة يمكنك المعاينة لرؤية النتيجة بنفسك :


http://i.imgur.com/2dxLQmN.gif

نموذج تصميم برنامج قرآن كريم (https://dl.dropboxusercontent.com/u/29881160/نموذج تصميم برنامج قرآن كريم5.rar)



إن شاء الله نضع السلسلة مرحلة مرحلة تدريجيا

إلى اللقاء مع تكرار الآيات :abc_138: فى السلسلة التالية

تحياتى أخوكم عبود


http://i.imgur.com/Nz3B0Vj.gif

ثامر أبو بلقيس
01-02-2016, 10:22 PM
وعليكم السلام ورحمة الله وبركاته
من المواضيع الهامة و المفيدة جدا .... جزاك الله خيرا نظير ما تقدمه
لك مني كل الاحترام . :abc_138:

ملاحظة : ياحبذا أخي عبود ... أن تتم دائما التجربة على سورة
تتجاوز آياتها العشرة عند بناء أكواد التكرار بالايات

خادم المسلمين
01-02-2016, 10:24 PM
شرح تفصيلى نادر جدا ان نجده او نحصل عليه بجد مجهود هايل جدا
ولكنه كان متوقع من استاذ عبود فجزاك الله كل خير
انا طبقت الجزء التانى وبعدما ضبطه لم احفظ المشروع بطريقة صحيحة
فلم يحتفظ بالتعديلات الجديدة
لذا سأرفعه غدا اخى
ان شاء الله

azizsoft
01-02-2016, 11:18 PM
جزاكم الله خيرا أخي عبود
على هذا الجهد المميز

شرح منسق ومحكم

وفقكم الله وأثابكم :abc_022:

ياسرهتهت
02-02-2016, 12:15 AM
بسم الله الرحمن الرحيم
شرح في غاية الروعة والابداع
ومجهود كبير في تبسيط الكود والمعلومات
وترتيب الافكار وتوضيحها
بالفعل اخي عبود عمل محترفين

http://e.top4top.net/p_31pnwl1.gif

جازك الله كل خير على هذا الشرح الوافي الكافي
موفق بإذن الله ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152:

عبود عبود
02-02-2016, 09:28 AM
بارك الله فيكم جميعا على المرور الجميل والكلمات الرائعة والمشجعة والمحفذة لبذل المزيد من الجهد

جزاكم الله خيرا إخوانى الأعزاء

فرح صالحي
02-02-2016, 10:40 AM
http://a.top4top.net/p_56075hr1.gif
http://d.top4top.net/p_559kjxn1.gif

عبد الهادي بهاب
02-02-2016, 11:45 AM
موفق بإذن الله ... لك مني أجمل تحية .

متاعين الشرح و نستفيد كثيرا من الاكواد

الهمام
02-02-2016, 03:12 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية . موفق بإذن الله ... لك مني أجمل تحية .

خادم المسلمين
02-02-2016, 03:16 PM
التطبيق
http://a.top4top.net/p_327a711.jpg (http://up.top4top.net/)

http://up.top4top.net/downloadf-32wqa72-rar.html

ياسرهتهت
02-02-2016, 04:04 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

http://e.top4top.net/p_32dpwa1.png

كنت اتمنا ان ارفع لكم القران الكريم كامل ومقسم
لكن للاسف النت عندي لا يسمح بذالك

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

http://b.top4top.net/p_32sim31.png

يمكنك البحث في جوجل

http://b.top4top.net/p_32tthj1.png

http://a.top4top.net/p_322xqi1.png

http://b.top4top.net/p_32sim31.png

http://e.top4top.net/p_32ua1e1.png وهذة افضل الروابط التي حصلت عليها من البحث

جاز الله اصحابها كل خير


http://a.top4top.net/p_32j5461.png مصاحف مقسمة لايات مع امكانية السماع قبل التحميل

33 مصحف و اكثر ... تجدهم هنا على صفحات موقع ارشيف


http://archive.org/search.php?query=...ensource_audio



http://a.top4top.net/p_32j5461.png مصحف مشاري العفاسي كامل مقسم الى ايات
ستجد وسط الصفحة 114 ملف مضغوط ل 114 سورة
كل سورة مقسمة لايات داخل ملف خاص بها
يمكن تحميل كل سورة لوحدها ويمكن التحميل كل السور معا


https://archive.org/details/114sora-6236-ayah-by-mshary-alafasy

رابط تحميل كل السور معا

https://ia600808.us.archive.org/29/items/114sora-6236-ayah-by-mshary-alafasy/Mishary_Alafasy_verse_by_verseMP3_Quran.zip




http://a.top4top.net/p_32010j1.png

:abc_152::abc_152: