الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن بطء ظهور الكنترول الكثيرة وعن ال Listview

مغلق
بدأه koao في 11 ديسمبر 2007 · 8 رد · 1,356 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي TabControl فيه ثلاثة TabPages وفي أحدها خمسين GroupBox وخلال التنفيذ تضاف داخلها Labels +PictureBox على حسب الحاجة.

سؤالي .. عندما انتقل الى هذا التبويب TabPage تظهر الكنترول بشكل تسلسلي يستغرق ثانيتين الى ثلاث ثواني

فكيف اسرع الظهور

ثانيا .. بخصوص الـ ListView في حال انها Details

لم استطع ان اغير لون الـ Subitem بحيث لو استخدمت

ListView.Items(0).Forecolor=Color.Red

فانه سيغير لون الصف كاملا

وعندما اكتب الكود التالي فانه في التنفيذ يمر عليه مرور الكرام ولا يحصل تغيير للون , لنفرض القيمة الموجودة في العامود الثاني

ListView.Items(0).Subitems(1).Forecolor=Color.Red

واخيرا اشكر لكم مساعدتي مقدما

وعندي اقتراح (موجه للمشرفين) كما في منتدى MSDN هناك في اعلى الردور زر امر يتيح لي ان احدد ما اذا كان الرد ساعد في حل مشاركتي

واذا كان كذلك تظهر ايقونة بجانب العنوان كمشاركة حلة مشكلتها والعكس

لان هناك مشاركات رد عليها باكثر من طريقه فلا اعلم انا كقارئ للموضوع ايهن انجع

وفي الختام .... اشكر كل اساتذتي بهذا المنتدى لما يقدمونه ... فاسال الله ان يجزاكم عني خير

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#2

بسم الله السميع العليم

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

/index.php?showtopic=65660

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

خذ مثلا اذا اردت ان تقوم بتغيير الخاصية Size ( يعني Width او Height ) لأي عنصر فأن هذا بدوره يفجر الحدث SizeChanged واذا كانوا 50 عنصر فمعناه 50 مرة من الحدث SizeChanged و هكذا لتغيير باقي الخصائص ... فإذا كنت لا تريد تفجير هذه الاحداث و انما تريد فقط ان تضع القيم الابتدائية لخصائص عنصر جديد فمن المفيد هنا استخدام الامرين سابقي الذكر .. او اخفاء العناصر لحين الفراغ من التعديل ثم اظهارهم دفعة واحدة ... و الكثير الكثير

اذا احببت يمكن وضع نموذج من الكود البطيىء للتعديل عليه بإذن الله تعالى .

بالنسبة لسؤالك الثاني . فهو كلام صحيح ... و لكي تتمكن من تعديل مظهر كل عنصر فرعي من عناصر الـ ListView فينبغي عليك توقيف الخاصية UseItemStyleForSubItems للعنصر المعين فمثلا تريد ان تجعل السطر الثالي يعمل بشكل صحيح :

ListView.Items(0).Subitems(1).Forecolor=Color.Red

قم بإضافة مايلي قبله:

ListView.Items(0).UseItemStyleForSubItems = False
ListView.Items(0).Subitems(1).Forecolor=Color.Red

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

تم تعديل هذه المشاركة بواسطة رغيد الطيب في 12 ديسمبر 2007 في 08:21

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#3

السلام عليكم

جرب اضافة الكنترولز فى ال Run time اى تستخدم الكود لاضافتها و ليس ال designer

#4

أخي / أختي ...... heba_22

أشكر لك مبادرتك بالمساعدة .. وهذا العشم

ولكن لو لاحظت كلامي أني أضفت الكنترول خلال التنفيذ وهو الـ Run Time

عموما كسبنا مرورك الكريم

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

أستاذي رغيد الطيب .. طيب الله مقامك في عليين وآنسنا الله بصحبتك

لقد استخدمت ControlsArray Class الخاص بأحد دروسك وكان خير عون لي في كثير من مشاريعي فجزاك الله خير عن كل من استفاد منه

وكذلك في مشروعي هذا .. واعذرني لعدم شرح الحالة بشكل دقيق .. فكانك فهمت مشكلتي على انها بطء خلال إنشاء الكنترولز

لا .. إنما مشكلتي أنه حتى وبعد إنشاء الكنترولز واستقرارها بخصائصها ... عندما أتنقل بين TabPages كلها سريعة ما عدا التبويب ذو الكنترولز الكثيرة

فانه يظهر كل كنترولز تباعاً وتبقى الخلفية بشكل التبويب الذي قبلة حتى تستقر كل الكنترولز ويظهور التبويب بشكل طبيعي

وانا بداية مشروعي وضعت كل الكنترولز خلال التصميم وكانت هذه المشكلة فظننت أن إنشاءها خلال التنفيذ سيحل المشكله ..صحيح أنه سرع تحميل البرنامج

ولكن سرعة التنقل بين التبويبات وتبويبنا ما زالت موجوده.

اما مشكلة الـ ListView فسلمت يداك .... طريقة ناجعة.

اما وضع مثال فسأضعه في الرد التالي...

وأخيرا أقول هذا شرف لي أن أكتب شيْ وأن يكون بمستوى إهتمامك.

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#5

وهذا مثال عن المشكله ... مع الشكر للجميع

WindowsApplication1.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#6

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

جزاك الله اخي على كل كلمة كل خير ... و اعلم ان من يشرفه مجرد النظر الى كود تضعه هو انا

و بالنظر الى المثال نجد ان الادوات على ذلك التبويب اكثر من كثيرة ... فهل لي بسؤال ... لماذا كل هذه الادوات وما فكرة البرنامج (ما الذي ينبغي ان يفعله البرنامج بكل تلك الليبلات ؟! ) .. لاحظ شيء مهم ان كثرة الادوات على الفورم تعني زيادة استهلاك موارد النظام فحتى ان قمت بتسريع برنامجك فإنه سيستهلك موارد اكثر من غيره اي الحجم الذي سيأخذه من الرام كبير جدا

فهل هناك حاجة فعلا حاجة لها ام اننا يمكنا بناء البرنامج بطريقة اخرى .. فما الغرض منه ؟؟

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

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#7

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

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

أما بعد .. فقولك أن البرنامج سيستهلك من الرام .. فهذه مصيبتنا مع الـ VB.NET (مع إني لم أجرب غيره) أنه يفعل ذلك .. فقد عملت برنامج

صغير بثلاث أزرار وثلاث مربعات إدخال ومع ذلك فإنه يستهلك 12 ميغا من الرام

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

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

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

لا أستطيع تغيير خواص الـ Subitems .. ولكن ولله الحمد وجدت الحل عندك.

فمشكلتي هذه أظن أنها تتعلق بـ Paint الخاص بـ TabPage فلو تعمل تصغير لنافذة البرنامج ثم تعمل إستعادة يفعل نفس الشئ

تم تعديل هذه المشاركة بواسطة koao في 14 ديسمبر 2007 في 15:03

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#8

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

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

وثانيا كلامك سليم الامر في موضوع الرسم Paint و لكني احب ان اوجه الحديث بإتجاه آخر (كيف تخطط لبرنامجك ) فحتى لو تجاوزت السرعة ( طبعا عندما تقوم بترجمة البرنامج الى Release و ليس Debug كما هو الحال عندما تشغله من داخل بيئة الفيجوال بيسك .. تختلف السرعة كثيرا لأن كل اوامر التحرير و الصيانة Debug يتم إزالتها و بهذا يصبح البرنامج سريع و قابل للنشر ... في جهازي البرنامج يسير بشكل طبيعي يعني تظهر الادوات بشكل عادي و سريع ) ولكن هذا في جهازي ( Core 2 Duo 2.2GHz مع رام 2GB ) وقد يكون جهازك افضل او اقل كفائة و بالتالي تظهر عيوب البرنامج

لا اريد الخوض في تفاصيل البرنامج كحبي ان اوجه تفكيرك نحو تحسين الاداء في البرنامج بشكل عام واتمنى ان تعرف ان موارد النظام (لا تتمثل بالرام فقط) فالرام هي المساحة التخزينية للبرنامج في الذاكرة و لكن استهلاك البرنامج يقاس بعدة عوامل ... منها عدد الـ Threads ، إستهلاكه للذاكرة، عدد النوافذ Forms المؤثر بدورها على الـ Threads ... القراءة و الكتابة ... اتصاله بالقرص الصلب، الموارد الرسومية GDI ........ الخ.

بكلمات اخرى وجود مئات الادوات على فورم واحدة يعني تفجير الاحداث لمئات المرات فمثلا الحدث Paint في فورم فيها كنترول واحد يعني تفجير الحدث Paint مرتين (مرة للفورم ومرة للكنترول) وذلك مع كل حركة يعملها المستخدم (مثل التصغير و التكبير) اما في برنامجنا فيعني تفجير الحدث Paint لما يقارب الـخمسمائة مرة (نظرا لعدد الادوات المقارب للخمسمائة كنترول) ... !!! وهو عدد مهول

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

راجع الرابط التالي للفائدة (http://support.microsoft.com/kb/71455)

لماذا لا اهمس في اذنك همسة صغيرة ؟!! ... هل تعرف لعبة السوليتر العنكبوتية Spider Solitaire ؟ .. تحتوي هذه اللعبة على حوالي مئة ورقة لعب !!! اي ليس خمسين كما في برنامجنا

هل ياترى استخم مبرمجوها ادوات مثل (PictureBox) لحفظ هذه الصور بحيث يمكنك سحبها و افلاتها و و و و ...

بالطبع لا .. كل ما تراه عبارة عن رسم و تحكم في الرسم فلا يتم ابدا الاعتماد على الادوات في حالات كهذه .. للمقارنة فقط استهلكت السوليتر من (كائنات المستخدم User Objects ) التابعة للنظام ما يقارب الـ 28 كائن ... و يمكنك ان تتخيل الفرق بينها و بين برنامجنا الذي استخدم اكثر من 511 من هذه الموارد!

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

طبعا هذه مجرد وجه نظر شخصية اعانني الله و اياك

تمنياتي لك بالتوفيق بإذن الله تعالى

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

تم تعديل هذه المشاركة بواسطة رغيد الطيب في 15 ديسمبر 2007 في 15:01

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#9

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

كنا نحسب البرمجة حلقات وخوارزميات فكنا نظن أنها سهله .. وإذا بنا نكتشف أشياء معقدة كل يوم والآخر .. موارد نظام .. وغيرها فكان الله في العون.

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

واعلم ان المقاله كانت ذات فائدة ومفصلة .. وهذا ما كان يحيرني أحيانا .. هل كل الأدوات والكائنات (مثل كائن الربط بين البرامج كالأكسس والأكسل) من غير الأشياء المذكورة في المقاله (أدوات الـ GDI والنماذج والقوائم المتعددة) يتم هدمها ذاتيا وإلا أحتاج أن أهدمها عند حدث الـ Closing الخاص بالفورم .. أعرف أنه موضوع متشعب فياليت تتكرم إذا سمح لك وقتك أن تكتب موضوعا متكاملا بهذا الخصوص

وذكرت نقطة مهمة لم أكن أعلمها .. وهي عمل Release .. لأن غالبا عندما أنتهي من البرنامج فبدل ما أعمل نشر للبرنامج .. أقوم فقط بنسخ ملف الـ exe الموجود في مجلد Bin الخاص بالمشروع وهذا يسهل علي لو وجدت خلل أن ارجع وأعدله فقط بدل ما أعيد نشر البرنامج .. فهل عملي هذا صحيح.

أما بالنسبة للـ Threads فكما أذكر أن هناك موضوع مفصل فلعلي أتمعن فيه لعلي أخلص إلى نتيجة.

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

تم تعديل هذه المشاركة بواسطة koao في 15 ديسمبر 2007 في 23:02

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…