Class: Tab_Dialog_Mixin

Module location: Dftab_mx.pkg line 114 (view source)

Class Hierarchy:

cObjectMixinTab_Dialog_Mixin

Class Definition

Properties

IntegerDefault_Tab
from resetting to 0 each time they activated tab to start/return to. -1 means no default
IntegerIn_Tab_Change_State
IntegerpbDeactivatePages
setting this to true will make your tab pages work like they did in VDF6. When a page is hidden, it will be removed from the focus tree. Only do this if you need to to get an old app working properly.
IntegerpbHotTrack
design-time only
IntegerpbResetPageOnActivate
If entering via next navigation should we move to the Default_Tab tab page
IntegerphoImageList
should be set to a cImageList instance to display images on tab-page labels. Design-time only
IntegerpiOriginalClientSize
this is used by tab pages to determine sizes for anchoring. It is used in conjunction with piLastClientSize in the tab page
IntegerPointer_Only_State
If Skip_Button is NOT smart this determines if mouse navigation always give the tab the focus or never gives it the focus. If smart, use same logic as above
IntegerPrivate.MultiLine_State
IntegerPrivate.TabWidth_Mode
Integerprivate_pbFlatSeparators
Integerprivate_peTabPosition
Integerprivate_peTabStyle
IntegerRotate_Mode
tab pages use this as their default rotate mode
IntegerSkip_Button_Mode
How to handle keyboard navigation SBM_NEVER = don't skip tab in kbd navigation SBM_ALWAYS = skip tab in kbd navigation. SBM_SMART = Use windows logic. If not on a tab and the page is changed go to page else goto tab

Functions and Procedures

integerActivate()
Most tab navigation events are controlled by the class and activate messages are sent in the middle of these events. When this occurs the private property In_tab_change_state is true. In some cases of keyboard navigation from outside the object activate is called directly. This should never happen with no active tab page (because add_focus takes care of this). In such a case, we must decide if activate should keep the focus (the tab) or give it to the page. If smart mode or always mode go the tab button else go to button (normal activate behavior)
IntegerAdd_Focus(Handle hoParent)
Augment to add the default tab page to the focus tree
integerAdd_Tab_item(String sLabel Integer tobjid)
Add a tab page. Pass tab name and the page object Id. return the tab (item) number of the new page
IntegerButton_Count()
Button_Count: Number of tab buttons
IntegerButtons_State()
integerClient_Area_State()
This is a risky thing to do. Some of the packages (server.pkg) use client_area_state to figure out if the object is a client or a form. In order for internal activation of the tab items to work the real internal property client_area_state must be false. However, the external package standpoint client_area_state must be true. This seems to work because the internal client decisions (which uses the real client_area_state property) uses the internal property (it does not get the property by putting the message in the df message queue.
integerCurrent_Tab()
The tab that is the current "active" tab. If the tab page is defined and it is not active the current_tab returns -1. If -1 you can use item_count to find the tab that is rolled forward
integerDeactivate_Tab(Integer tab# Integer tabpageobj)
Define_Tab_dialog_Mixin()
Delete_Tab_Item(integer iTab)
DoActivePage(handle hId)
Private: this gets called to make sure that this page is active. Called during next/prior object id. For this to work the ID must be in the focus tree
DoHideTab(integer hPage integer bHide)
Mouse_Down(Integer iWindowNumber Integer iPosition)
Replace current mouse behavior with out own. This give us more control over the switching behavior.
Mouse_Drag(Integer iWindowNumber Integer iPosition)
cancelled to stop rotation of tab-pages
IntegerMultiLine_State()
Next()
augmented to create smarter next and previous behavior for tab buttons.
integerNext_Object_Id(integer fg)
special for tab dialog. Note this must augment (and not replace) the next_object_id logic defined in standard_object_mixin, If descend (fg=0) we want to return the current tab page (it's the next object).
handleNextTabId()
Return the next tab. Skip tab pages where the button is shadowed
IntegerNumberOfRows()
OnBeginningOfPanel(integer hoPanel)
event called when Beginning_of_Panel is called by panel (usually view) by default, switch to the default tab (which is 0).
OnDisplay()
OnResize()
Page(Integer iState)
IntegerpbFlatSeparators()
IntegerpeTabPosition()
IntegerpeTabStyle()
Previous()
handlePriorTabId()
Return the Prior tab. Skip tab pages where the button is shadowed
private_DoUpdateTabs()
Rebuild_Tab_Pointers()
Request_Next_Tab(integer Mode)
Request_Previous_Tab(integer Mode)
No Param or 0 - Kbd Navigation 1 - Mouse Navigation 2 - Force to Button 3 - Force to Dialog
Request_Switch_To_Tab(Integer tab# integer PointerMode)
PonterMode parameter (required): 0 - Keyboard Navigation 1 - Mouse Navigation 2 - Force to Button 3 - Force to Dialog
Request_Tab_Display(integer iTab)
Display passed tab page. If no value (or -1) use default tab display = add to focus tree if needed, rotate up, do not activate
Set(String Val)
Must Cancel. Values Are The Tab Items
Set(Integer cy Integer cx)
Set(Integer bMultiLine)
Set(Integer eTabPosition)
Set(Integer eTabStyle)
Set(Integer bButtons)
Set(Integer bFlatSeparators)
Set(Integer iMode)
Set(Integer item# Integer Obj#)
Get/Set Tab_Page_Id identifies the page object associated with the tab item
set(integer iItem string sVal)
integerTab_Change(Integer totab Integer PointerMode)
PointerMode: 0 - button takes focus 1 - dialog takes focus 2 - no-one takes focus, just add to focus tree Rule: If the tab dialog object has the focus ; give the keep the focus in the dialog object. else if switching pages Give the focus to the new page else (tab dialog<>focus, same page) give the tab the focus
integerTab_Page_Id(integer item#)
IntegerTabWidth_Mode()