نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: پیدا کردن کنترل فعال درون کنترل های Container

  1. #1


    محصولات کاربر

    یوزرفرم پیشرفته
    آخرین بازدید
    2018/06/18
    تاریخ عضویت
    February 2011
    محل سکونت
    تهران
    نوشته ها
    311
    امتیاز
    1448
    سپاس
    129
    سپاس شده
    560 در 159 پست
    تعیین سطح نشده است

    s.cheraghi به Yahoo ارسال پیام

    پیدا کردن کنترل فعال درون کنترل های Container

    سلام
    مدتی هست که در حال ایجاد یک پروژه VBA هستم، تو یکی از یوزرفرم ها از یک Multipage استفاده کردم و داخل آنها از Frame و درون فریم ها کنترل های موردنظر قرار داده شده.
    وقتی تعداد کنترل ها درون یوزرفرم زیاد بشه برای جلوگیری از سردرگمی و کم شدن حجم کدها باید کدهای جنرال (عمومی یا همه کاره، هر اسمی که دوست دارین) بیشتری استفاده کنین.
    در این جور موارد دانستن کنترل فعال بسیار کاربردی هست (مخصوصا اینکه نام معنا داری برای هر کنترل درنظر گرفته باشین که با استفاده از آن مکان، نوع، محتوا و یا هر چیز دیگری را به شما اطلاع دهد).
    در این مورد میتونی از خاصیت ActiveControl استفاده کنین ولی با فرمی که من داشتم همیشه جواب MultiPage هست!!!
    راه حل زیر به ذهنم رسید که بهم جواب داد:

    کد PHP:
    Function ActiveChild(Parent As Control) As ControlSelect
     
    Case Left(Parent.Name4)
    Case 
    "Fram""Page"
       
    Set ActiveChild ActiveChild(Parent.ActiveControl)Case Else    Set ActiveChild ParentEnd SelectEnd Function 
    این تابع یک تابع recursive هست که با فراخوانی خودش، یک چرخه ایجاد میکنه تا جائیکه در آخرین مرحله به جواب برسه و این جواب رو برمیگردونه!!! (مثل اینکه شما یک جعبه بزرگ داشته باشین که داخلش یک جعبه کوچیکتر هست و داخل اون یک جعبه دیگه و این جعبه ها همینطور درون هم قرار گرفته اند تا جائیکه آخرین جعبه باز بشه و محتویاتش بیرون کشیده بشه )

    مفهوم کد اینه:
    یک Container Control (که همون MultiPage یا Frame هست) رو بهش میدیم. تابع بررسی میکنی که کنترل فعال این کنترل چی هست؟ اگه یک کنترل ساده باشه که به عنوان جواب برگردانده میشه ولی اگه دوباره کنترل فعال یک کنترل Container باشد. با فراخوانی تابع و دادن این کنترل بهش کنترل فعال درون اون رو بررسی میکنیم ( انگار در جعبه بعدی رو باز میکنیم ) انقد این کار ادامه پیدا میکنه که بلاخره یک کنترل ساده پیدا بشه و به عنوان جواب در آخرین تکرار تابع برگردونده بشه، حالا دیگه کار توابعی که در این مدت فراخوانی شدن برگردوندن اون جوابه تا اینکه به اولین تابع برسه و به شما تحویل بده، حالا شما میتونین از روی اسم تابع اطلاعاتی رو که میخواین بگیرین.
    ساده هست ولی باید یکم تمرکز کنین.
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    ویرایش توسط s.cheraghi : 2015/09/16 در ساعت 10:04
    در یادگیری سیر نشوید

    برای ارتباط بیشتر به سایت ExcelPedia سربزنید.
    برگزاری دوره های آموزش اکسل در تهران
    آموزش توابع اکسل


  2.  


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 4
    آخرين نوشته: 2015/06/27, 19:34

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

انجمن اكسل ايران , اكسل , اكسس , سوال و جواب اكسل , سوال اكسس , انجمن اكسل ايران , توابع اكسل, آموزش اكسل, آموزش اكسس, VBA, ويژوال بيسيك

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است
با ما در تماس باشيد