PDA

View Full Version : ساخت كنترلي با حداقل 100 Object بوسيله حلقه for



parselearn
یک شنبه 04 اسفند 1387, 18:28 عصر
با سلام
من دارم كنترلي شبيه به كنترل mbmap ساخت آقاي mb925 درست مي كنم

اما مشكلم اينجاست، وقتي كه مي خوام مثلا 500 تا خانه درست كنم با حلقه
برنامه تا موقعي كه شي ها درست بشن قفل مي كنه

آيا روشي هست كه بشه اين پروسه رو سريعتر كرد



For i = 1 To 500
Load PMap(i)
PMap(i).Left = PMap(i - 1).Left + PMap(i - 1).Width + 30
PMap(i).Top = PMap(i - 1).Top
End If



روش سريعتري وجود داره؟

xxxxx_xxxxx
یک شنبه 04 اسفند 1387, 18:43 عصر
سلام.
توي حلقه بنويسيد: DoEvents
اين كار باعث نميشه كه برنامه سريعتر عمل كنه، و بلكه شايد كندتر هم بشه ولي در زمان اجراي دستورات درون حلقه برنامه قفل نمي كنه چون cpu آزاده كه به ساير وفقه ها هم سوئيچ كنه پس برنامه قفل نمي كنه.
راستي، Next i بعد از End if هست ديگه. درسته؟
موفق باشيد

parselearn
یک شنبه 04 اسفند 1387, 21:38 عصر
ممنونم
ولي سرعت واقعا كمه

در كنترلي كه mbt925 درست كردن
هنگامي كه مثلا 1000 تا خانه تعيين ميشه كمتر از چند صدم ثانيه نمايش داده ميشه

آقاي mbt925 اگه ممكنه در مورد روش بوجود آوردن كنترلها توضيح بدهيد
با تشكر

vbhamed
دوشنبه 05 اسفند 1387, 08:22 صبح
سلام

من فكر مي كنم بهتره يك PictureBox بزاريد، خاصيت AutoRedraw اون رو True كنيد
و به جاي بارگذاري Object ها، از دستوران Line و Circle و ... براي كشيدن مستطيل هاي مدل دار و رنگي و دايره و ... استفاده كنيد

Mbt925
سه شنبه 06 اسفند 1387, 20:39 عصر
در این کنترل از توابع API مختص رسم اشکال استفاده شده.
در ضمن شیب رنگ در هر سلول وجود داره.

از بهینه سازی های بسیار زیاد و جزئی در این کنترل استفاده شده تا مشکل سایر کنترل هاور نداشته باشه.