ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
دو جدول ساخته شد یکی شامل دو فیلد Mnu و Title برای رکورد کردن نامگذاری منوها و عنوان آنها ، در شکل زیر لیبل از سمت راست به چپ با نام های M0 تا M2 می باشند.
جدول Sub با فیلدهای Mnu ، Sub ، Title که نام های منو ساب منو و عنوان ساب منو در آن رکورد میشوند، نامگذاری لیبل های زیر منو طبق تصویر از S0 تا S7 است.
دستور کار :
1-تعریف متغیر M در بالاترین رویه برای ذخیره کنترل فشرده شده
2-تعریف متغیر MnuBkColor در بالاترین رویه برای ذخیره کردن BackColor کنترل لیبل منو که System Menu Bar تنظیم شده
3-زمان لود شدن فرم مقدار متغیر MnuBkColor برابر با پراپرتی BackColor یکی از لیبل ها شود فرضا M0.BackColor
در هرکدام از رویدادهای کلیک لیبل های شکل یک بعنوان منو یک تابع نوشته شده به ترتیب زیر :
1-در تابع اگر کنترل فشرده شده مخالف M و M نال نبود سپس پراپرتی BackColor مقداری که در M ذخیره شده بشود
2-تنظیم پراپرتی BackColor کنترل فشرده شده به (RGB(160,200,160
3-برابر کردن M با کنترل فشرده شده
4-بخاطر اینکه زمان فشرده شده روی منو اگر قبلا فشرده نشده پراپرتی Tag آن تغییر یابد ( برای نمایش یا ویزیبل شدن sub ها و یا ویزیبل نشدنشان ) نوشت اگر پراپرتی Tag کنترل فشرده شده برابر "" شود به 1 تغییریابد در غیر اینصورت دوباره Tag یک شود
5-لوپ در کنترل های Sub با For.....Next از 0 تا 7 مثل For i=0 To 7
6-در اینجا مقادیر پراپرتی Tag کنترل فشرده شد ( منو ) کاربرد دارد که اگر یک باشدمی بایست لیبل های Sub طبق جدول نامشان ویزیبل شوند وبقیه که در لود فرم نوشتیم کلا Visible=No همان No باشند
_ & " Me.Controls("s" & i).Visible = IIf(DLookup("Sub", "Sub", "mnu='" & c.Name & "' and
(Sub='" & Controls("s" & i).Name & "'") <> "", True, False"
_& " Me.Controls("s" & i).Caption = Nz(DLookup("Title", "Sub", "mnu='" & c.Name & "' and
"'" & Sub="'" & Controls("s" & i).Name
Me.Controls("s" & i).Left = c.Left
(Me.Controls("s" & i).BackColor = RGB(160, 200, 160
در غیر اینصورت پراپرتی Visible کل لیبل های Sub به No تنظیم شوند که هاید شوند و پراپرتی BackColor کنترل فشرده شده ( منو ) نیز به MnuBkColor تنظیم شود
کالر لیبل های سابی ( منظور لیبل های عمودی ) که به آبی تغییر پیدا می کنند از رویداد MouseMove آنها استفاده شده و در اینجا هم نیاز به ذخیره کردن نام ساب در یک متغیر است برای مقایسه کردن و تغییر رنگ به جدید و برگرداندن به رنگ قبلی
دور لیبل های بالا بعنوان منو با کنترل لاین که در نوار Design فرم است کشیده شده