ش | ی | د | س | چ | پ | ج |
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 |
انتقال فوکس به تب مورد نظر :
فرض کنید در پراپرتی شیت تب کنترل خاصیت Style را به None تغییر داده ( که کلا تب ها مشخص نشود ) و کامند باتنی خارج از تب کنترل ایجاد کرده اید ، زمان کلیک کردن روی باتن CmdOrder فوکس به اولین پیج کنترل TabCtl0 میرود. ( تنظیم Style تب براب عدم ظاهر شدن تب ها و ایجاد باتن بخاطر این است که چپ چین است و خاصیت راست چین نداد )
Private Sub cmdOrder_Click()Me.TabCtl0.Pages(0).SetFocusEnd Sub
Tabcontrol.Style Properties :
ظاهر شدن باتن بجای تب با تنظیم کردن خاصیت Style به یک ، البته در برگه پرارتی تب کنترل ( Property Sheet آن ) می توان خاصیت را انتخاب و تنظیم نمود احتیاجی به کد نویسی نیست
Forms("Mailing List").Controls("TabCtl1").Style = 1
در تصویر زیر :
باتن Main نامش butMain است
تب کنترل نامش tabMenu است
Style مربوط به خاصیت تب کنترل است که Property Sheet آن در نمای دیزاین قابل دسترسی است
هرکدام از تب ها نامگذاری شده و هر کدام از پیج ها PageIndex دارد . Page1 در اینجا pageMain نامگذاری شده در رویه زیر که مربوط به باتن Main در تصویر است گفته شده به تب pageMain برود (Value=0 , PageIndex=0 ) طبق شکل تب pageMain که قبلا page1 نامیده شده در تب کنترل ولیوی صفر دارد و پیج ایندکس تب هم صفر است در نتیجه به تب صفر میرود که همان ابتدا است.
Private Sub ButMain_Click()
tabMenu.Value=pageMain.PageIndex
End Sub
پراپرتی Value یک TabControl حاوی شماره ایندکسی از آبجکت Page جاری است.یک آبجکت Page برای هر Tab در TabControl وجود دارد . اولین آبجکت Page همیشه ایندکس 0 دارد و دومی 1 و ادامه دارد ( عدد صحیح و ترتیبی )
پراپرتی PageIndex بین اعداد صحیح 0 و پراپرتی Count کالکشن Pages منهای یک تنظیم میشود.این پراپرتی در هر View می تواند تنظیم شود.تغییرمقدارپراپرتی PageIndex موقعیت آبجکت Page در کالکشن یا مجموعه Pages را تغییر و باعث تغییر آشکارا و قابل دید ترتیب پیج ها روی تب کنترل می شود.( منظور زمانیکه ست کنید از یک پیج به پیج دیگری منتقل یا Move می شوید !!!)
For i=0 To Tabctl0.Pages.Count-1
Msgbox Tabctl0.Pages(i).Name & Chr(34) _
Tabctl0.Pages(i).PageIndex
Next
مثال زیر پیج با نام Notes روی تب کنترل Information در فرم Order Entry را به اولین پیج انتقال میدهد
Forms("Order Entry").Controls("Information").Pages("Notes").PageIndex = 0
CommandButton.TabIndex Property :
تعیین موقعیت کنترل در Tab Order فرم ( محل چیدمان کنترل ها ) . عدد صحیحی است بین صفر تا تعداد کل کنترل ها منهای یک ! بطور مثال اگر فرمی سه کنترل که هر کدام دارای پراپرتی TabIndex است ، باشد مقادیر معتبر برای این پراپرتی 0 1 و 2
تنظیم پراپرتی TabIndex به عدد صحیحی کمتر از صفر خطایی را تولید می کند.
اگر اعداد پراپرتی TabIndex کنترل ها ( هر کنترلی که این خاصیت را دارد ) تغییر دهید ترتیب انتقال روی آنها وقتی کلید Tab را می فشرید تغییر میکند. امتحان بنمائید!!! و در نظرات بنویسید استفاده خواهند برد.
Control.Properties Property :
شئ مجموعه پراپرتی ها مجموعه ای از تمام پراپرتی های مرتبط به یک کنترل است که میتوان به اعضاء تکی مجموعه با استفاده از ایندکس شئ یا عبارت رشته ای که نام شئ عضو است ارجاع داد.
اولین شئ عضو در مجموعه مقدار ایندکس صفر و تعداد کل آن در مجموعه مقداری است از پراپرتی Count مجموعه پراپرتی ها منهای یک.
For i=0 To Controls("Button1").Properties.Count-1
Debug.Print Controls("Button1").Properties(i).Name
Next
اگر کد بالا اشتباه بود فرم و کنترل را تنظیم کنید به متغیری و
For Each Prp In Ctl.Properties
Debug.Print Prp.Name
Next
نمایش کنترل ها در فرم :
Function ShowControls()Dim frmCust as FormSet frmCust = Forms("Customer")Dim i as IntegerFor i = 0 To frmCust.Count - 1Debug.Print frmCust(i).ControlNameNextEnd Function
البته پراپرتی Count در فرم برای شمارش فرم های باز است .
صرفا جهت مطالعه :
intForms = Forms.Count ' Number of open forms.
If intForms > 0 Then
For intI = 0 To intForms - 1
Set frm = Forms(intI)
Debug.Print frm.Name
intControls = frm.Count
If intControls > 0 Then
For intJ = 0 To intControls - 1
Debug.Print vbTab; frm(intJ).Name
Next intJ
و بقیه را خودتان حدس بزنید !!!
CurrentProject.allforms.count
تماما از سایت های خارجی استخراج و کپی شده امتحان کنید چنانچه اشتباه بود اصلاح شده در نظرات قید گردد
refer-to-tab-control-objects-in-vba
انتخاب Tab موردنظر Tabctl.Value=1
در رویداد Onchange که زمان تغییر تب پیج ها اتفاق می افتد در کد زیر کپشن فرم به کپشن پیج تغییر می یابد و با Select Case و پراپرتی Name پیج چنانچه نام داخل Case بود کاری را انجام دهد .
Private Sub tabMain_Change()
On Error GoTo ErrHandler
'get a reference to the active page
Dim pg As Page
Set pg = tabMain.Pages(tabMain.Value)
'update the form's caption
Me.Caption = "Customer Orders - " & pg.Caption
'take action for specific pages
With pg
Select Case .Name
Case "Page1"
'do stuff
Case "Page2"
'do stuff
Case "Page3"
'do stuff
Case "Page4"
'do stuff
End Select
End With
ExitHere:
On Error Resume Next
Set pg = Nothing
Exit SubErrHandler:
Debug.Print Err, Err.Description
Resume ExitHere
End Sub
The Change event occurs when the contents of a text box or the text portion of a combo box changes. It also occurs when you move from one page to another page in a tab control.
With Your_Form
If !tabControl.Pages(!tabControl.Value).Tag = "Your tag" then
'Do Something
End if
End With
The .Value
property of a TabControl returns the index (zero-based) of the current page. So, if I have a TabControl named TabCtl14
that contains two pages, FirstPage
and SecondPage
, then the code...
Private Sub TabCtl14_Click() If Me.TabCtl14.Value = 1 Then MsgBox "SecondPage was clicked." End If End Sub
...displays the MsgBox whenever I click the "SecondPage" tab in the TabControl.