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

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

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

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

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

بازی با کامند باتن ها .... باتن کشویی


کنترل باتن ام دار از M1  تا M4  و کنترل اس دار از S1 تا S10  ( در سمت راست تصویر و فیروزه ای رنگ )




جدول MENU و SUB







نحوه ی عمل :


1-تعریف متغیری بنام MnuPressed  از نوع Boolean در اول رویه برای اینکه اگر همان باتن با پیشوند M فشرده شد ( تعریف متغیر Mnu در اول رویه برای ذخیره باتن با پیشوند M  فشرده شده )  برابر شود با Not MnuPressed  در غیر اینصورت True شود.

2-ذخیره عدد انتهای باتن با پیشوند M  در متغیری

3-اگر Type در جدول Menu برابر Side شده متغیر دیگر تعریف شده را برابر 1 قرار می دهیم چرا که باید باتن ها با پیشوند S در کنار باتن فشرده شده قرار گیرد.

4-تعریف متغیری با نام مثلا SubCount برای شمارش تعداد Sub ها با توجه به منو که در جدول Sub ثبت شده و در جلورانی باتن های M استفاده میشود 

5-زدن لوپ در M ها با استفاده از For....Next در لوپ پراپرتی Top کنترل باتن های M دار برابر میشوند با پراپرتی TAG آنها ( که قبلا در لود فرم مقدار داده شده و سپس کپشن ها میشوند نام باتن های M  دار .... اگر متغیر لوپی فرضا i بزرگتر از مقدار متغیری بود که عدد آخر باتن M دار فشرده شده را ذخیره می کرد بود آنگاه پراپرتی Top آنها براب  می شوند با پراپرتی Top + ارتفاع کنترل فشرده شده * متغیری که تعداد ساب منو در جدول Sub  را نگهداری میکند یا فرضا همان SubCount که باعث جلو رفتن باتن های بعد میشود. در این لوپ اگر MnuPressed  برابر False شد یا مقدار متغیری که Side را در خودش نگه می داشت یک شد باز هم پراپرتی Top کنترل های M دار با پراپرتی Tag خودشان برابر می شوند.


6-لوپ بعدی میشود ازکوچکترین عدد آخر باتن S دار تا بزرگترین آن  ( در اینجا طبق تصویر از 1 تا 10 ) در این لوپ اگر متغیر لوپی کوچکتر مساوی  شمارش ساب ها بود طبق کنترل M دار فشرده شده پراپرتی Visible یک شود و در غیر اینصورت صفر ... حال میرسیم به جایی که اگر تایپ در جدول Side بود پراپرتی Top و Left چه مقداری بگیرند ... اگر متغیری که Type را در خودش نگه میدارد برابر یک شد یعنی باتن های S دار می بایست در کنار باتن M دار فشرده شده قرار گیرند لذا پراپرتی Top می شود پراپرتی Top باتن M دار فشرده شده + ارتفاع آن در متغیر لوپی - دوباره ارتفاع آن و پراپرتی Left باتن های S دار  هم میشوند پراپرتی Left کنترل M دار ( فشرده شده ) + عرض آن  + 50 در غیر اینصورت باید کنترل های S دار در زیر کنترل M دار فشرده شده قرار گیرند + ارتفاع کنترل M دار و پراپرتی Left کنترل های S دار برابر کنترل M دار فشرده شده می شود. در پایان لوپ باید اینرا هم در نظر گرفت اگر MnuPressed=Flase شد پراپرتی Top کنترل های S دار برابر پراپرتی Tag آنها شوند ( که در رویداد  لود فرم ذخیره میشوند ) و پراپرتی Left آنها نیز میشود پراپرتی Left یکی از کنترل های S دار که می توان متغیری را در اول رویه تعریف کرد و مقدار را در آن ذخیره نمود. 

 

متغیرهای تعریف شده در اول رویه ( در هر لحظه و  یا جابجایی از کنترلی تغییر می کنند و ثابت نیستند که فقط در یک رویداد خاص استفاده شوند 

Private MnuPressed As Boolean

  متغیری که در تمام رویه فرم جاری استفاده میشود و پراپرتی لفت یکی از کنترل های اس دار را نگهداری میکند Private SubLeft

 متغیری که نام باتن ام دار فشرده شده که در انتهای تابع نوشته شده را ذخیره می کند و در لحظه تغییر میکند Private MNU


متغیرهای تعیرف شده در تابع متاثر از کلیک باتن های M دار فقط در تابع استفاده می شوند و مثل متغیر های بالا تغییر نمی کنند 


  متغیر لوپی به تعداد باتن های ام دار  Dim I

متغیر لوپی به تعداد باتن های اس دار Dim j

 متغیر نگهداری تایپ در جدول منو  (Dim W     (Type

 متغیر نگهداری شمارش باتن های اس دار طبق کنترل ام دار فشرده شده از جدول ساب  Dim SubCount






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