مشاهده نسخه کامل
: مشکل در ایجاد event برای array controls
SSS_HHH_OOO
29-11-2010, 22:17
سلام
من یه برنامه میخوام بنویسم که یه قسمتش اینطوریه که با کلیک روی صفحه یه خط که دو سرش دو تا دایره هستن کشیده بشه و هر وقت کلیک دوم انجام شد خط ثابت بشه و با کلیک بعدی دوباره یه خط جدید
تا اینجا مشکلی نداره
مشکل اینجاس که من میخوام فقط وقتی روی دایره ها کلیک میشه یه خط جدید ساخته بشه پس باید یه event برای دایره ها ایجاد بشه ولی از اونجایی که این دایره ها آرایه هستن نمیتونم براشون event درست کنم
چطوری میشه اینکارو کرد؟؟
یعنی الان توی event کلیک شدن روی فرم اینو نوشتم
ممنون میشم کسی اگه بتونه کمکم کنه
اینم برنامه:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این کل کدیه که فعلا نوشتم و خطوطی که میخوامو میکشه ولی هر جای صفحه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
god of war 2
29-11-2010, 23:41
سلام.
شما میتونید از قطعه کد های زیر برای ایجاد Handle به هر رویدادی از دایره ها استفاده کنید.
برای مثال شما اول باید یک زیر روال برای دریافت رویداد کلیک (یا هر رویداد دیگری) داشته باشید شبیه کد زیر
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و بعد پس از ایجاد و مقدار دهی اولیه هر کدام از دایره ها میتونید رویداد کلیک انها را با استفاده از تابع زیر به Sub بالا یی که تعریف کردید مرتبط کنید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته میتونید در نوع آرگومان در یافتی از موارد دیگری هم استفاده کنید که بستگی به خود شما داره که کدوم مناسب تره مثل نمونه زیر (دقت کنید بجای استفاده از ByVal از ByRef یعنی انتقال از طریق ارجاع استفاده کنید. )
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.
SSS_HHH_OOO
29-11-2010, 23:53
ممنون دوست عزیز
الان این فانکشنو کجا باید استفاده کنم ازش؟
god of war 2
30-11-2010, 12:48
الان این فانکشنو کجا باید استفاده کنم ازش؟
هر جایی میتونی استفاده کنی فقط باید قبلش اون دایره مورد نظر مقدار دهی شده باشه.برای مثال:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کد برای ایجاد handle به رویداد کلیک اولین عضو آرایه دایره ها که شما اونو در form_load مقدار دهی کردین.
برای بقیه دایره ها هم میتونید دقیقا بعد از اینکه مقدار دهی شدند این کارو انجام بدید.
SSS_HHH_OOO
30-11-2010, 13:56
آقا دستت درد نکنه خیلی لطف کردی مشکلمو حل کردی :)
SSS_HHH_OOO
30-11-2010, 14:08
حالا یه سوال دیگه
من الان میخوام بدونم روی کدوم یکی از دایره ها کلیک شده چیکار باید بکنم؟؟ الان یه رویداد کلی برای همه دایره ها داریم ولی میخوام یه متغیر داشته باشم که بگه کدوم دایره کلیک شده
god of war 2
30-11-2010, 14:55
من الان میخوام بدونم روی کدوم یکی از دایره ها کلیک شده چیکار باید بکنم؟؟
شی sender در
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دقیقا برابر با دایره ای است که روی آن کلیک شده.
اگر اندیس دایره کلیک شده در آرایه رو هم لازم دارید میتونید از مشخصه نام هر کدام از دایره ها برای ثبت شماره اندیس استفاده کنید . البته میتونید برای پیدا کردن اندیس از راههای دیگری هم مثل جستجوی اون شی در آرایه استفاده کنید که این کار باعث پایین امدن سرعت برنامه و افت کارایی میشه.
برای مثال ثبت اندیس در مشخصه name:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و یا اگر در یک حلقه به اونها مقدار بدید به شکل زیر
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
SSS_HHH_OOO
30-11-2010, 15:08
ممنون
آخه جزو لیستی که وی بی باز میکرد برای sender این left وجود نداشت ولی تو ران تایم مثل اینکه کار کرد :)
god of war 2
30-11-2010, 15:46
میتونید برای راحتی و سرعت کار هنگام کد نویسی شبیه زیر عمل کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته اینکار باعث ایجاد یک کپی اضافه از شی دایره در حافظه میشه که چندان مهم نیست ولی برای اشیاء بزرگتر این کار میتونه از سرعت برنامه کم کنه.
برای اینکه فقط از این شی فقط در زمان تایپ کد و برای راحتی کار استفاده کنید میتونید بعد از اینکه کد نویسی به اتمام رسید قبل از build برنامه با استفاده از ابزار Replace خود VS تمام واژه های ncrcl رو در این قطعه کد به sender تبدیل کنید و در نهایت خط اعلان متغییر رو هم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پاک کنید.
SSS_HHH_OOO
30-11-2010, 19:51
نکته خیلی جالبی بود ممنون :)
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.