ش | ی | د | س | چ | پ | ج |
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 |
تماما با اشراف نسبی بر داکیومنت سایت Office شامل آبجکتها و پراپرتی های مخصوص به کنترل باتن در اکسس و با راهنمایی متخصصین فروم های خارجی تهیه و در دسترس عموم گذاشته شد تا فراگیران با تسلط به مبانی گفته شده بتوانند ماژولی برای دستیابی بهتر از این اثر خلق نمایند .
یادرآوری میشود کنترل باتن و غیره در نمای دیزاین قابل ساخت است اگر کسی فایل را بصورت کامپایل شده ارائه دهد ( accde ) اگر ماژولی نوشته باشد که اتومات کنترلی را به فرم اضافه نماید بعلت اینکه در این حالت نمای دیزاین بسته میشه فقط خود را ضایع ساخته
جدول مربوطه :
فرم2 که فرم اصلیست و حاوی باتن های 0 تا 3 است و Stacked شده :
فرم 3 حاوی باتن های 0 تا 15 که به داخل فرم 2 کشیده شده و یکسری از پراپرتیهای آن فرم دستی تنطیم شده :
در وهله ی اول نوشتن تابعی و قرار دادن آن داخل رویداد کلیک هر یک از باتن های فرم 2
( Function SetSubButtons(c As Control
نوشتن لوپ برای صفر کردن پراپرتی BottomPadding باتن های فرم 2 اگر صفر نشوند معادلات شما بهم خواهد ریخت تست کنید
For i=0 to 3
Controls("Command" & i).BottomPadding = 0
Next
گرفتن آخرین مقدار Sub وارد شده در جدول طبق باتن فشرده شده در فرم 2
"'" & d = DLast("Sub", "Table1", "Main='" & c.Name
باز شدن فرم 3 که سابفرمیست در فرم 2 تا مقدار d که در بالا گرفته شد
Me.Form3.Height=Me.Form3.Controls("" & d & "").Top + Me.Form3.Controls("" & d & "").Height - 5
پراپرتی Left سابفرم 3 را معادل Left باتن فشرده شده در فرم 2 قرار میدهیم
Me.Form3.Left = c.Left
پراپرتی Top سابفرم 3 را تنظیم میکنیم تا سابفرم در زیر باتن فشرده شده در فرم 2 قرار گیرد
Me.Form3.Top = c.Top + c.Height + c.TopPadding
End Function
نکته :
در تابع باید قبل از لوپ نوشته شود که در صورتیکه BottomPadding کنترل فشرده شده مخالف صفر بود و همچنین ارتفاع سابفرم 3 مخالف صفر بود c.BottomPadding و Me.Form3.Height صفر شود در غیر اینصورت بعد از Next انجام شود
(Public Function SetSubButtonS(c As Control
If c.BottomPadding<>0 And Me.Form3.Height<>0 Then
c.BottomPadding=0: Me.form3.Height=0
Esle
For
.
.
Next
.
.
End if
End Fucntion
شکل زیر بیانگر تست شدن موارد بالاست البته چند مورد سلیقه ایست مثل باز شدن آبشاری زیر باتن های اصلی یا بسته شدن سابفرم 3 که با Pause انجام شده
برای باز شدن آبشاری باید از تابع Pause که در سایت ها گذاشته شده و از Timer ، حلقه و Doevents استفاده می کند بهره ببرید
برای اینکار نیازمند نوشتن لوپ دیگر در انتهای تابع بالا دارید بطوریکه یک سوم یک سوم به ارتفاع سابفرم 3 و همچنین پراپرتی BottomPadding کنترل فشرده شده اضافه شود ... برای کاهش زماینکه که سابفرم 3 باز است و روی همان کنترل کلیک می کنید می بایست در If بالا لوپی تعبیه گردد تا یک سوم یک سوم کاهش پیدا کند و احتیاجی به صفر کردن پراپرتی BottomPadding نیست .
زمانیکه ماوس از روی کنترل های فرم 2 جای دیگری منتقل می شود چنانچه سابفرم 3 اتفاع داشته باشد و BottomPadding مخالف صفر باشد کل باتن ها BottomPadding خود را از دست داده و پراپرتی ارتفاع سابفرم 3 نیز به صفر تنظیم میشود ( از رویداد MouseMove در سکشن Detail که باتن های فرم 2 در آن قرار دارند استفاده شده )
طبق جدول کامندهای Sub ( فرم ۳ ) به ترتیب از صفر به بعد نوشته شده و در هیچکدام از قلم افتادگی وجود ندارد به این نکته نیز توجه داشته باشید !!!