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

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • s.cheraghi

    • 2011/02/27
    • 311

    پیدا کردن کنترل فعال درون کنترل های 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 باشد. با فراخوانی تابع و دادن این کنترل بهش کنترل فعال درون اون رو بررسی میکنیم ( انگار در جعبه بعدی رو باز میکنیم ) انقد این کار ادامه پیدا میکنه که بلاخره یک کنترل ساده پیدا بشه و به عنوان جواب در آخرین تکرار تابع برگردونده بشه، حالا دیگه کار توابعی که در این مدت فراخوانی شدن برگردوندن اون جوابه تا اینکه به اولین تابع برسه و به شما تحویل بده، حالا شما میتونین از روی اسم تابع اطلاعاتی رو که میخواین بگیرین.
    ساده هست ولی باید یکم تمرکز کنین.
    Last edited by s.cheraghi; 2015/09/16, 10:04.
    در یادگیری سیر نشوید :idea:

    برای ارتباط بیشتر به [URL="https://excelpedia.net/"]سایت[/URL] [URL="https://excelpedia.net"][B][COLOR=#008000]ExcelPedia [/COLOR][/B][/URL]سربزنید.
    برگزاری [URL="https://excelpedia.net/excel-ninja/"]دوره های آموزش[/URL] [URL="https://excelpedia.net/what-is-excel/"][B]اکسل [/B][/URL]در تهران
    [URL="https://excelpedia.net/category/excel-functions/"][B]آموزش توابع اکسل[/B][/URL]
چند لحظه..