Class: Tab_Dialog_Mixin
Class Hierarchy:
cObject

Mixin


Tab_Dialog_MixinClass Definition
Properties
Integer
Default_Tab
from resetting to 0 each time they
activated
tab to start/return to. -1 means no default
Integer
In_Tab_Change_State
Integer
pbDeactivatePages
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.
Integer
pbHotTrack
design-time only
Integer
pbResetPageOnActivate
If entering via next navigation should we move to the Default_Tab tab page
Integer
phoImageList
should be set to a cImageList instance to display images on tab-page labels. Design-time only
Integer
piOriginalClientSize
this is used by tab pages to determine sizes for anchoring. It is used in conjunction
with piLastClientSize in the tab page
Integer
Pointer_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
Integer
Private.MultiLine_State
Integer
Private.TabWidth_Mode
Integer
private_pbFlatSeparators
Integer
private_peTabPosition
Integer
private_peTabStyle
Integer
Rotate_Mode
tab pages use this as their default rotate mode
Integer
Skip_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
integer
Activate()
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)
Integer
Add_Focus(Handle hoParent)
Augment to add the default tab page to the focus tree
integer
Add_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
Integer
Button_Count()
Button_Count: Number of tab buttons
Integer
Buttons_State()
integer
Client_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.
integer
Current_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
integer
Deactivate_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
Integer
MultiLine_State()

Next()
augmented to create smarter next and previous behavior for tab buttons.
integer
Next_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).
handle
NextTabId()
Return the next tab. Skip tab pages where the button is shadowed
Integer
NumberOfRows()

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)
Integer
pbFlatSeparators()
Integer
peTabPosition()
Integer
peTabStyle()

Previous()
handle
PriorTabId()
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)
integer
Tab_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
integer
Tab_Page_Id(integer item#)
Integer
TabWidth_Mode()