کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

CommandButton.BottomPadding property (Access) در ساخت باتن های آبشاری


تماما با اشراف نسبی بر داکیومنت سایت 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 ( فرم ۳ ) به ترتیب از صفر به بعد نوشته شده و در هیچکدام از قلم افتادگی وجود ندارد به این نکته نیز توجه داشته باشید !!!








نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد