- import declarations
- Integer
ghoApplication - Integer
ghoSkinFramework - Integer
ghoToolTipController - Integer
ghoErrorSource - Bitmap_Support_Mixin : Mixin
*** Mixin class: Bitmap_Support_Mixin
***
*** 1. Adds support for get Bitmap property to those classes which can
*** already support [set] bitmap.
Define_Bitmap_Support_Mixin()
- String
private.bitmap
Set(String sBitmap)
- string
Bitmap()
- Label_Mixin : Mixin
Mixin Classes
Set(String Val)
- String
Label()
- Shadow_Mixin : Mixin
This mixin is used by single item and no item objects for shadow
support.
Note that an object supports three levels of shadowing. A single item
can be shadowed (if applicable), an object can be explicitly shadowed
or an object can be indirectly shadowed by a parent.
Public Interface:
Get/Set Object_Shadow_State Sets the object's explicit SS.
Gets object's explicit IOR Implicit SS
Get/Set Item_Shadow_State (if items are applicable)
Get Implicit_Shadow_State if shadowed as group by ancestor
Get Explicit_Shadow_State if shadowed by self
Get Implicit_Hidden_State if hidden by an active parent (like a parent tab page)
Send Shadow_Display
Get/Set Shadow_State (if item based, sets item, else object)
An object is shadowed if it is explicitly or implicitly shadowed. We now have two flavors of
implicit. Either shadowed by a parent or hidden by a parent (e.g. parent tab page). If shadowed under
any of these conditions the physical shadow_state must be true so that navigation skips it.
Define_Shadow_Mixin()
- Boolean
Implicit_Shadow_State()
Returns true if the object is shadowed as part of a group shadow.
- Boolean
Explicit_Shadow_State()
Returns true if the object is explicitly shadowed by self
- integer
Implicit_Hidden_state()
Returns true if the object is active but hidden (like a child of a tab page)
Set(integer iState)
Private: Should only be sent by an ancestor object which is
notifying all descendants that they have been shadowed as part
of a group
DoImplicitTabHide(integer iState)
private. This sets implicit shadowing for child objects within a tab page. This is similar to
Implicit_shadow_state except that it should not send shadow_display. Shadowing
and unShadowing causes color side effects (unshadow ignores the old background color) so when shadowing
for tab children (which you will never see) we just do nothing. Set the implicit shadowing is still needed
to make the navigation work properly.
Set(Integer iState)
Shadow_Display()
Set(integer iItem integer iState)
Item_shadow_state always gets the item's SS
- integer
Item_Shadow_State(integer iItem)
- Integer
iState
Set(integer iState)
Current_Shadow_State sets the object's true shadow-state
With single item objects we use
the shadow_state of item 0 (the only item) to let store this
information. In multi-item this must be replaced (see multi-item below)
This is for the single item model
- integer
Object_Shadow_State()
This returns if the object is truly shadowed. In single item we
use item 0
Set(Integer bState)
Enabled_State, for this rev, simply calls Object_Shadow_State but
inverts the parameter logic because Enabled_State is "enable centric"
vs. Shadow_State which is "disable centric". KCR
- Integer
Enabled_State()
Again, we're calling upon Object_Shadow_State and simply inverting
the return value to match the context of the "enable centric"
property. KCR
Set(integer iItem integer iState)
Shadow_State can apply either to the object or the item. In single
item or no item objects it refers to the object. In multi-item it
refers to the item. This is the single item model
- Integer
Shadow_State(integer iItem)
- handle
StuckInRing(integer bDown)
if next or prior object results in a ring it cannot get out of, it calls this
and expects this to return an object ID or 0, to tell what to do
- Integer
hoID
- integer
private.Next_object_id(integer fg)
- Integer
hId
- integer
private.prior_object_id(integer fg)
- Integer
hId
- integer
ContainerFocusWillNotChange()
Private:
needed by navigation (next_object_id). If the selected object is a container
it will receive the activate message. If the container already has the focus, it
will not do anything. We need to know if that will be the case. This is augmented
by tab-pages which actually will change the focus when sent activate.
- integer
Prior_Object_Id(integer bNoDescend)
- Integer
hoID - Integer
hoFirst
- integer
Next_Object_Id(integer bNoDescend)
- Integer
hoID - Integer
hoFirst - Integer
iCount
Top_of_Panel()
- Integer
hoFirst
Bottom_of_Panel()
- Integer
hoLast
Beginning_of_Panel()
Move focus to first focusable object in panel
"Panel" is defined as the scope object
End_of_Panel()
NotifyBeginningOfPanel(integer hoPanel)
When Beginning_of_panel is called all child objects need to be sent the message
OnBeginningOfPanel. This is the private notification process.
OnBeginningOfPanel(integer hoPanel)
Public Event sent to all objects after a Beginning_of_panel is sent
- integer
Activate()
- Integer
rVal
- Integer
Entering()
- Integer
rVal
Activate_Area(Integer TakeFocusFg)
Activate an object Area. If the object is not in the focus tree
delegate until a popup object, scoped object, or child of desktop is
encountered and activate that group. If TakeFocusFg is true, make sure
this object ends up with the focus. The is similar in logic to
deactivate area_flag. Used by Validate_Items to make sure a popup
object or a popup group takes the focus properly.
- Integer
PopSt
- Entry_Shadow_Mixin : Mixin
This replaces the message in shadow_mixin. With entry based single item
objects you must set the item options for noenter and noput to make
shadowing work. However, setting noenter, sends shadow_state which will
call this. This allows us to set displayonly fields by sending
Set Object_Shadow_State to T|F
Set(Integer iState)
- Integer
SS - Integer
bHidden - Integer
bOldSS
- Multi_Item_Shadow_Mixin : Mixin
This mixin is used by multi objects for shadow support.
Define_Multi_Item_Shadow_Mixin()
Set(integer iState)
- integer
Object_Shadow_State()
Set(integer iItem integer iState)
- Integer
Shadow_State(integer iItem)
- FormFloatingPopupMenu : DFBaseEditPullDown
Popup()
- Integer
Loc
- FloatingPopupMenu : FormFloatingPopupMenu
Construct_Object()
- Integer
Default_Form_Floating_Menu_ID - FormFloatingMenu : FormFloatingPopupMenu
- FloatingPopupMenu_Mixin : Mixin
- RGB_Support_Temp_Mixin : Mixin
Define_RGB_Support_Temp_Mixin()
- Integer
private.Object_Color
set(integer i1 integer i2)
- integer
Object_Color()
- ToolTip_Support_Mixin : Mixin
Define_ToolTip_Support_Mixin()
Define_ToolTip_Support_Mixin:
- String
psToolTip_private - Boolean
pbCenterToolTip_private - Boolean
pbUseFormWindowHandle_private - Handle
phToolWnd - Handle
phoToolTipController_private
Set(Boolean bValue)
pbCenterToolTip:
- Boolean
bOldValue - Integer
hToolWnd
- Boolean
pbCenterToolTip()
- Boolean
bValue
- Boolean
pbUseFormWindowHandle()
implemented as function so that it can be overridden in class.
Set(Boolean bValue)
Set(Handle hoToolTip)
phoToolTipController:
Use this method to attach to a different tooltip handler object than the global
tooltip object. Pass the object handle of the tooltip handler.
- Handle
phoToolTipController()
- Integer
hoValue
Set(String sText)
psToolTip:
- String
sOldText - Integer
hToolWnd
- String
psToolTip()
- String
sValue
AddToolTip()
AddToolTip:
Register the tooltip with the tooltip control.
- Boolean
bCenterToolTip - UInteger
uFlags - Integer
hToolWnd - Integer
hoToolTip - String
sText - Integer
lpText - Integer
lpToolInfo - tWinToolInfo
ToolInfo
DeleteToolTip()
DeleteToolTip:
Remove the registered tooltip from the ToolTip control.
- Integer
hToolWnd - Integer
hoToolTip - Integer
iRet - Integer
lpToolInfo - tWinToolInfo
ToolInfo
UpdateToolTip()
UpdateToolTip:
Register the tooltip with the tooltip control.
- Boolean
bCenterToolTip - UInteger
uFlags - Integer
hToolWnd - Integer
hoToolTip - String
sText - Integer
lpText - Integer
lpToolInfo - tWinToolInfo
ToolInfo
- TextBox : DfBaseTextBox
Construct_Object()
- Integer
Auto_Size_State - Integer
Label_Shadow_Display_Mode
Use_Parent_Color()
- Integer
Txtclr - Integer
Backclr
Set(Integer Item# String Val)
Autosize(String Val)
- Integer
Ext
Shadow_Display()
- Integer
iMode - Integer
iEnable
Enable_Window(integer iState)
- Integer
hWnd
Page_Object(Integer iState)
- Integer
hWnd
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- Integer
DEFAULT_LABEL_OFFSET - Integer
DEFAULT_LABEL_JMODE - AutoLabel : TextBox
Construct_Object()
- Integer
Owner_Object
Mouse_Down()
- Integer
obj - Integer
rval
Page_Object(integer iState)
Augmented to Ask owner to locate itself. Owner will only do this
if required.
- Integer
obj
Shadow_Display()
- Integer
iMode - Integer
iEnable - Integer
obj
Set(integer iState)
DoImplicitTabHide(integer iState)
see notes for this message in dfbase
Destroy_Object()
- Integer
obj
Add_Focus(integer id)
Use_Parent_Color()
auto-labels should not do this. They will be given their colors
by their owner object. Cancel text box behavior.
- DFLabel_Mixin : Mixin
Define_DFLabel_Mixin()
- Handle
Label_Object - Integer
Label_Needs_sizing_State - Integer
Private.Label_Row_Offset - Integer
Private.Label_Col_Offset - Integer
Private.Label_Justification_Mode - Integer
Private.Label_Shadow_Display_Mode - Integer
PrivateLabel_Color - Integer
PrivateLabel_TextColor - Integer
PrivateLabel_FontUnderline - Integer
PrivateLabel_FontItalics - Integer
PrivateLabel_FontWeight - Integer
PrivateLabel_FontSize - String
PrivateLabel_TypeFace
Set(Integer mode)
- Integer
obj
- Integer
Label_Shadow_Display_Mode()
- Integer
Create_Label_Object()
- Boolean
bOn - Boolean
bTestColor - Integer
iVal - String
sVal - Integer
hoLabel - Tb : AutoLabel
Destroy_Label_Object()
Allow label object to be destroyed. If active, first deactivate
Only destroy if the object is gone,
- Integer
hoLabel - Integer
hWnd
Destroy_Object()
Set(Integer i1 Integer i2)
- Integer
Label_Offset()
- Integer
icRow - Integer
icCol
Set(Integer icRow)
- Integer
Label_row_offset()
Set(Integer icCol)
- Integer
Label_col_offset()
Set(Integer mode)
- Integer
Label_Justification_mode()
Set(String Val)
Set label value, if value becomes '' destroy the label object
- Integer
Id
- String
Label()
- Integer
obj - String
Lbl
Set(Integer iColor)
- Integer
hoLabel
- Integer
Label_TextColor()
- Integer
iVal
Set(Integer iColor)
- Integer
hoLabel
- Integer
Label_Color()
- Integer
iVal
Set(Boolean bOn)
- Integer
hoLabel
- Boolean
Label_FontUnderline()
- Boolean
bOn
Set(Boolean bOn)
- Integer
hoLabel
- Boolean
Label_FontItalics()
- Boolean
bOn
Set(Integer iWeight)
In setting default values for weight, typeface and size we are using the
value of the conainer and not the control. Using the control is actually
a bug and assumes that fonts for label and forms are the same.
- Integer
hoLabel
- Integer
Label_FontWeight()
- Boolean
iVal
Set(Integer iHeight Integer iWidth)
- Integer
hoLabel - Integer
iSize
- Integer
Label_FontSize()
- Boolean
iVal
Set(String sTypeFace)
- Integer
hoLabel
- String
Label_TypeFace()
- String
sValue
Set(Boolean bVisible)
augmented so that the visible state of the label is
adjusted with the control
- Integer
hoLabel
ReSize_Label()
Marks label info as dirty. If the object is active it
actually makes the change. As of 15.0, this is public
and can be used to force a resize if you change the
font metrics of an active label.
Request_Locate_Label()
Optimized locate label. Only does it if needed
AdjustLabelColors(Handle hoLabel)
called when a label color is set. It sets new text and back colors
if needed. It handle clNone colors, which means get the color from the
container. If both colors are clNone it makes sure they are not the same.
- Integer
iTxtClr - Integer
iBackClr - Integer
iCurrentColor - Boolean
bTestColor
Locate_Label()
- Integer
iLoc - Integer
iRow - Integer
iCol - Integer
iRowOff - Integer
iColOff - Integer
iSz - Integer
eDelMode - Integer
eJMode - String
sLabel - Integer
hoLabel
Set(Integer cy Integer cx)
- Integer
Sz - Integer
NewSz
Set(Integer y Integer x)
- Integer
lc - Integer
NewLc
Label_Shadow_Display()
- Integer
obj
Page_Object(Integer iState)
Augment to Page Label if required
- Integer
obj
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip creation.
Page_Delete()
Augment to remove Page Label if required
- Integer
hoLabel
- MenuBar : DfBaseActionBar
- PopupMenu : DfBasePullDown
Class: PopupMenu
1. Tells KEY to send redirect message. I think we are now doing this
but I don't have the message names. I expect this will go away.
Construct_Object()
- Integer
Redirect_Message()
Redirect_Message
If destination object exists send message to destintion else
send message to the focus object (if a focus object exists).
It expects the current selected item to CURRENT.
This is a good message for augmentation.
- Integer
Msg# - Integer
Aux# - Integer
Rval
- Integer
Key(Integer Ky)
Augment Key to send Redirect_Message (which is
what the old pulldowns did.) Let's keep this private
- Integer
Rval
Exit_Menu()
OnInitMenu()
OnChange()
Change_Menu(integer item# integer obj integer iFlags)
Initialize_Menu()
- BasicToolBar : DFBaseToolbar
Construct_Object()
- Integer
private.Display_Style
Command(Integer I1 Integer I2)
Set(Integer iStyle)
- Integer
Display_Style()
Redirect_Button_Message(Integer Itm)
- Integer
Msg - Integer
Obj - Integer
Rval
Add_Button(Integer Img# Integer Msg# Integer Obj#)
- Integer
Cnt
Add_Button_Type(Integer Type#)
- Integer
Cnt
Add_Tooltip(String Tip)
- Integer
Itm
Add_Space()
- Integer
GuiSize()
- Integer
hWnd - Integer
x - Integer
y - Integer
x1 - Integer
y1 - Integer
cy - Integer
cx - Integer
iVoid - Integer
lpsRect - String
sRect
OnShowHint(integer iItem)
OnHideHint(integer iItem)
Notify(Integer wParam Integer lParam)
- Integer
iVoid - Integer
iCode - Integer
lpsNMHDR - String
sNMHDR
Initialize_Hint(integer iItem)
- Integer
SbId - String
sStatus_Help - String
sShadowed
Hide_Hint(Integer iItem)
- Integer
SbId
- Standard_Object_Mixin : Mixin
Mixin-Class: Standard_Object_Mixin
1. Define Help interface
2. Define alternate switch logic
3. Define Status bar help support
Define_Standard_Object_Mixin()
- Integer
Switch_Skip_State - String
Private.Status_Help - Integer
Use_Parent_Status_Help - Integer
Disable_Default_Action_Button_state
Set(String Item# String Shelp)
- String
Status_Help(Integer Item#)
- String
Shelp
Switch_Next_Area()
New Message
Switch_Prior_Area()
New Message
Request_Status_Help(Integer Fg)
- String
Sstatus_Help - Integer
Sbid
PrivateSetCurrentButton()
when the object takes the focus make sure that the default button, if any
is highlighted. Note that buttons override this message and handle this
a bit differently.
- Integer
hoButton
PrivateKillCurrentButton()
when the object loses the focus the default button highlight must
be removed - it will be restored, as needed, by the next object
that takes the focus. If we do not do this, the button will not
lose the highlight when switching between other panels and
programs (and it should).
- Integer
hoButton
doResetCurrentButton()
this forces a reset of the default button....This should only be sent to this
object when it is the focus object since it is the focus that determines
what should or should not be highlighted.
Notify_Focus_Change(Integer Fg)
OnSetFocus()
OnKillFocus()
Prompt_Callback(integer hPrompt)
dbLists now send this callback message. By adding this at this low
level all objects can safely use prompt lists.
- Integer
gbKenterNext - DefaultActionButton_Mixin : Mixin
this gets mixed into "panel" classes (views, panels,
modal panels) and defines support for a default button. The only
public interface exposed for default buttons is:
get/set default_action_button
Define_DefaultActionButton_Mixin()
- integer
private.Default_Action_Button - Integer
private.Current_Action_Button
- Integer
Default_Action_Button()
Set(Integer hoButton)
- Integer
hFoc
- Integer
Current_Action_Button()
notice there is no Set for this. The set is private
Default_Action()
called by kEnter. By default it should send the message
KeyAction to the default button. If possible, avoid augmenting
this ... change the Default_action_button property instead.
- Integer
hoButton - Integer
iRetVal
- Standard_Container_Mixin : Mixin
Mixin-Class: Standard_Container_Mixin
1. Define standard object stuff
2. Set default color
3. Add Get/Set Label support
(4. Auto-locate capability - not right now - only in deos)
5. Add Modal object suppport
Define_Standard_Container_Mixin()
Set(integer iState)
- integer
Object_Shadow_State()
End_Construct_Object()
- NonVisual_Container_Mixin : Mixin
- integer
Object_Color()
- Integer
rval
- Integer
Color()
- Integer
rval
- Integer
TextColor()
- Integer
rval
- integer
Container_Handle()
- Integer
rVal
Page(integer state)
Page_Delete()
- Panel_Mixin : Mixin
Define_Panel_Mixin()
Exit_Application()
Close_Panel()
OnResize()
OnPaint()
Set(Integer cy Integer cx)
- Integer
cxy
Paint()
Page(Integer iPageObject)
{ MethodType=Event Visibility=Private }
Procedure Page Integer iState
Forward Send Page iState
If (iState =1) Send OnResize
End_Procedure
- Integer
iOld - Integer
iNew
OnPreApplySkin(Boolean bReApply)
When skins are applied to views we want to maintain the client size. I theory we want to do this to all objects
with pbSizeToClientArea=T. Views are the most likely objects to need this which is what I've tested this with.
- Integer
hWnd - Integer
iVoid
OnPostApplySkin(Boolean bReApply)
- Integer
iNew - Integer
iVoid - Integer
hWnd - Boolean
bOk
Switch_Next_View()
These switch view messages should be disabled if the object is modal.
if not modal, delegate until we hit the client area (which knows this message)
This protects against modal objects placed inside of a MDI view.
Switch_Prior_View()
- Integer
Static_Server_State()
When DEOs are properly placed within DEO clients this message will never be needed.
This is called via delegation in server.pkg inside of get default_static_server_state.
This will only get called when you've got an improper DEO nesting. At some point in the
future we might remove this message so you will see a runtime error which would identify this
as a bug. Since this has always worked we are leaving this in 8.3 so existing applications
keep working. In the future this may get removed.
Notify_Focus_Change(Integer Fg)
panels need their own version of this which do not send the NotifyFocusSetInContainer
notification. Actually panels never really take the focus, but this message does get sent.
NotifyFocusSetInContainer(Handle hoControlFocus)
do nothing and stop the delegation. We do not delegate notification beyond panel
- String
Default_Currency_Mask - String
Default_Numeric_Mask - String
Default_Date_Mask - Integer
Default_Date_Window - Mask_Form_Mixin : Mixin
Set(integer item# integer MaskType integer LeftDigit integer RightDigit string DfltMask)
Set(integer item# integer LeftDigit integer RightDigit String DfltMask)
- String
sMask
Set(integer item# integer LeftDigit integer RightDigit string DfltMask)
- String
sMask
- Single_Item_Navigate_Mixin : Mixin
Mixin-Class: Single_item_Navigate_Mixin
This used by form and entry classes to handle the differences that
occur because DF thinks as a multi-item object and these are single item
1. define alternate switch behavior for single items form and entry
Define_Single_Item_Navigate_Mixin()
Switch_Next_Area()
The switch_next_area and switch_Prior_area messages are sent by the
F6/Shift+F6 keys. Changes are made here to make a switch do something
useful in entry_forms. The current goal is to make it act like the
character mode product. We do this by making the switch skip all
dfentry_forms until it hits a DEO that is not an entry-form. This
changed behavior only occurs when switching FROM a dfentry_form
TO another dfentry_form.
- Integer
Obj - Integer
Ef - Integer
Rval - Integer
hoRing
Switch_Prior_Area()
See Comments In Switch_Next_Area
- Integer
Obj - Integer
Ef - Integer
Rval - Integer
hoRing
- Integer
Entering()
Navigational work-around. In single item objects previous does not
work when the previous item is displayonly (any shadow-state condition).
The previous key remains where it is. While next works, it does not
work well in that the NEXT is sent recursively - place enough display
only object together and the stack would overflow. Switch/Switch_back
will continue searching if the object's activation fails (activate,
entering or exiting). We will trigger entering to return a non-zero
value if 1) it was already going to do that, or 2) we've got a single
item object and that single item's shadow-state is set. This seems to
address all possibilities.
- Integer
Rval
- Standard_Form_Mixin : Mixin
Mixin-Class: Standard_Form_Mixin - single item form mixin
1. Define standard object stuff
2. Set default border to entry_field
3. Add "Set Label" auto-label support
Define_Standard_Form_Mixin()
Shadow_Display()
- Integer
Clr - Integer
Brdr - Integer
State
OnMaxText()
OnChange()
Command(Integer wParam Integer lParam)
Set(Integer iItem String sValue)
- Standard_Grid_Mixin : Mixin
Define_Standard_Grid_Mixin()
- Integer
Minimum_Positionadded for prompt and spin button support. These should be set in OnInitSpin
- Integer
Maximum_Position - Integer
Current_Position - integer
piLastResizedColumnprivate. System uses it
- integer
peResizeColumnmode for reszing columns when grid is resized
- integer
piResizeColumnif peResize column is set to rcSelectedColumn, this determines which column is sized
- integer
piWheelDeltainternal, accumulates mouse wheel clicks
- Statushelp_Array : Array
- Integer
Activate_Item(Integer Item#)
- Integer
Irval - Integer
Ioldst
- Integer
Activate_Column(Integer Item#)
- Integer
Irval - Integer
Citem - Integer
Lwidth
Header_Mouse_Click(Integer Item#)
- Integer
Irval
Header_Mouse_Double_Click(Integer Item#)
Header_Notification(Integer Mode Integer Item#)
Set(String Item# String Shelp)
- String
Status_Help(Integer Item#)
- String
Shelp - Integer
Lwidth - Integer
Obj
Request_Status_Help(Integer Fg)
- String
Sstatus_Help - Integer
Sbid
OnChange(integer iItem)
OnMaxText(integer iItem)
Command(integer wParam integer lParam)
Procedure Command Integer wParam Integer lParam
Forward Send Command wParam lParam
If (Hi(wParam)) eq EN_CHANGE Begin
Send OnChange (Current_Item(self))
End
Else If (Hi(wParam)) eq EN_MAXTEXT Begin
Send OnMaxText
End
End_Procedure
- Integer
iParam - Integer
iItem
Combo_Item_Changed(integer iItem)
Combo_Edit_Changed(integer iItem)
OnDropDown(integer iItem)
OnCloseUp(integer iItem)
Set(Integer iItem String sValue)
Set(integer iItem string svalue)
Set(Integer Itm)
Set Current_Item / Set New_Item
1. Modified to optimize painting and make scrolling work properly
2. Add Request_Status_Help for item changes.
- Integer
IsFoc - Integer
oldst - Integer
oldtop
Set(Integer Itm)
- Integer
IsFoc - Integer
oldst - Integer
oldtop
Add_Item(integer iMessage string sValue)
when active a grid does not repaint new items on the screen
This forces a repaint when an item is added.
- Integer
bOld
Set(integer st)
Set Dynamic_Update_State
Modified to works as follows:
If 0, turn DUS off
If 1, Invalidate all cells and make it "2"
If 2, repaint only invalid cells plus scroll bars. Not Header
If 3, repaint everything (including headers)
When complete a 1,2 or 3 will set this property to 1.
- Integer
Column(Integer Item#)
Return the column of the passed item
- Integer
Current_Col()
Return the column of the current-item
Beginning_of_Data()
Support for Beginning_of_Data and End_of_Data
Note that these messsages are Column sensitive. They do not
switch columns.
Jump to the first column
End_of_Data()
jump to the last column
- Integer
col - Integer
cols - Integer
itmCnt
Scroll(Integer eDirection Integer iNumLines)
Scroll
1. Is column sensitive. It will never scroll out of the
current column
2. Painting fixes and optimizations - no flickering
- Integer
oldst - Integer
oldtop - Integer
itm - Integer
cols - Integer
col - Integer
col2 - Integer
st - Integer
items
set(integer hwNewFoc integer hwOldFoc)
Bug Fix. Focus change to object does not send notify_focus_change.
This will force this (which also forces onSetFocus)
- integer
Activate()
This fixes a bug in grids where activating a grid whose
item's entry_state is false does not display the dotted outline
if the item is not changed (set current_item not called). This is
a temporary workaround that should be removed as soon as this is
fixed in the runtime. We want to use base class new_item message
which paints the rectangle but does little else. Note the use of
forward send (a technique which is only used as a low level bug fix.
NOTE: This replaces the activate in Shadow_mixin. When this is fixed
this can be removed. (it duplicates the shadow activate purpose)
- Integer
rVal - Integer
itm
Value_Spinned(Integer iValue)
Messages added for Prompt and Grid support
- Date
Base_Date()
We will check for the unlikely case of a two year date.
If the data value is 2 year-ish we will assume that
we want a two year date
- Date
dt
Set(integer iValue)
- Date
dDate - Integer
iType - Integer
iCur
- integer
Spin_Value()
- Integer
iRval - Date
dDate - Integer
iType - Integer
iCur
Form_Button_Mouse_Down(Integer iItem integer Counter)
private: called when prompt of spin button is pressed.
this is augmented to set up ranges for spin buttons
- Integer
iValue - Integer
iMin - Integer
iMax - Integer
hBtn - Integer
eButtonStyle - Integer
iRVal
Form_Button_Notification(integer iItem integer iPos)
private: called when prompt or spin button is pressed
- Integer
hBtn - Integer
eButtonStyle - Integer
iVal
DoSpinOne(integer bUp)
private: Used by keys. bUp means add
- Integer
iCurrentValue - Integer
iItem - Integer
eButtonStyle
DoScrollDown()
DoScrollUp()
Prompt()
by default this does nothing. Called when prompt button is called. Use Current_item to
figure out what to do.
OnInitSpin()
Public: for Augmentation
based on the current_item (get current_item) or current column
(get current_col or get Column iCurrentItem) set spin params
can set minimum_position, maximum_position,
DoApplyAnchors(integer x integer y)
- Integer
iOldSize - Integer
iNewSize - Integer
iOldDyn
DoadjustGridWidths(integer iGuiDelta)
adjust columns when anchors change. Uses delta value passed and property
piResizeColumn
- Integer
iResizeColumn - Integer
eResizeColumn - Integer
iCols - Integer
iCol - Integer
iColWidth - Integer
i - Integer
iWidth - Integer
iRemain
Select_Toggling(integer iItm Integer bState)
Sometimes this can get called when the object is disabled. A mouse_up will send
this even though the object did not take the focus. This stops that behavior.
OnWmMouseWheel(Integer wParam Integer lParam)
low level notification that wm_mouseWheel was sent. Passes windows
defined parameters. If you need to do something special, use OnMouseWheel
- Integer
iWheelDelta - Integer
iKeys - Integer
iDelta - Integer
iClicks
OnMouseWheel(integer iClicks integer iKey)
public event. By default just move up or down a line
- Integer
i - Integer
iKeyValue
- Select_Mixin : Mixin
Define_Select_Mixin()
- Integer
Auto_Size_State
Set(String Val)
***
*** Property: Label
*** Purpose : Compatibility DAF
***
- String
Label()
Autosize(String Val)
***
*** Procedure: AutoSize
*** Purpose : This procedure will calculate the size needed to display
*** the label of the object. It will set the size accordingly.
***
- Integer
Label_Size
OnChange()
- Integer
Checked_State()
Set(Integer bCheck)
Set(Integer iItem Integer bSelect)
- Standard_Select_Mixin : Mixin
*** Mixin class: Standard_select_mixin
*** 5
*** 1. Standard messages used by select type objects (radios & checkboxes)
Define_Standard_Select_Mixin()
- Edit : DfBaseEdit
Class: Edit
1. Add Standard entry support
Construct_Object()
Set(Integer State)
- Integer
hndl - Integer
Foc
- Integer
Wrap_State()
Toggle_Wrap()
- integer
Parent_Ratios()
If font changes the edit size stays the same. This make the most
sense.
Set(integer iState)
- integer
Object_Shadow_State()
Shadow_Display()
- Integer
Clr - Integer
Brdr - Integer
State
Set(integer iItem integer iState)
- integer
Item_Shadow_State(integer iItem)
OnChange()
OnMaxText()
Command(Integer wParam Integer lParam)
Set(Integer iItem String sValue)
Set(Integer bState)
Get and Set capslock and set windows style to make it work
- Integer
CapsLock_State()
set(Integer bState)
Delete_Data()
Base class does not clear changed_state. Also augment to send OnChange
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- List : DFBaseListBox
Class: List
1. Add Standard entry support
Construct_Object()
OnChange()
Set(Integer iItem)
- Integer
iLastItem
Page(integer bState)
The following procedures should be moved to C code. This resolves
certain issues with mapping DF list controls to windows controls.
Users are encouraged to only use two modes of list selection:
select_mode = MULTI_SELECT | SINGLE_SELECT
DO NOT use NO_Select - it won't work right.
Special functionality to Note:
1. Set Select_Count to TRUE : If multi-select sets all select-states to TRUE
if single-select sets current item to TRUE
Set Select_Count to FALSE: Sets all items to false
2. Space bar no Longer toggles select state. If you want this. Create the following:
on_key key_space send toggle_Current_item
3. There is no message that is fired every time the select-state changes.
4. There is no message that ALWAYS gets sent when an object's select_state is
toggled (e.g. marking range via shift+mouse). Do not use set select_state or
item_changed_state for multi-select augmentations. With single select lists
you CAN use set current_item or set Select_State
when paging non-multi lists the select-state item is lost. This fixes this
- Integer
iCur - Integer
bSel
set(integer bState)
Set Select_Count is supposed to clear or select all items. This fixes
it to do the following:
If F - clear all selected items
if T and Multi - Select all items
If T and not Multi - Set select-state of current item to True
- Integer
i - Integer
iCnt
- integer
Select_Count()
The internal Select_Count gets hopelessly out of synch with the
select count in the windows control. Here is what we must do:
1. If no-window control -find the count the hard way. Count them!
2. If window control and Multi select: Forward get count
this works because when paged, DF just gets the LB_SELCOUNT property
which is right)
3. If window control and not multi: Will either be 0 or 1. Check current_item to
see if it is selected. We can't use LB_SELCOUNT because it returns -1
- Integer
iCnt - Integer
i - Integer
iSel
Set(Integer iItm Integer bSt)
Correct select-states for paged lists.
When the list is not paged it is fine.
When paged, and singlethe only way to get the item selected is to set
its current_item. The only way to clear a selected item is to
send the windows message LB_SERCURSEL
when multi, we need to send windows messages LB_SETSEL
- Integer
cnt - Integer
i - Integer
sc
toggle_Current_item()
- Integer
iCur
- Form : DFBaseForm
Class: Form
1. Add Standard entry support
2. Support color change when shadowed (right now this is done in flex -
should we try to make this automatic?)
3. Single item switch behavior
Construct_Object()
- Integer
m_Prompt_object
Set(Integer iItem Integer hoPrompt)
- integer
Prompt_Object(integer iItem)
Prompt()
- Integer
hoPrompt
Set(Integer bState)
With form based objects we can set capslock by setting
the right bit in forms_options. We use the
options message instead of the option message because
form_option doesn't seem to work right.
- Integer
iOptions
- Boolean
CapsLock_State()
check capslock bit for capslock_state
- Integer
iOptions
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- Entry : DfBaseEntry
Class: Entry
1. Add Standard entry support
2. Support color change when shadowed (right now this is done in flex -
should we try to make this automatic?)
3. Help_DataFile support
4. Single item switch behavior
5. Auto margin, type setting
Construct_Object()
Set(Integer bState)
With entry based objects we can set capslock by setting
the right bit in item_options AND form_Options. We use the
options message instead of the option message because form_
option doesn't seem to work right.
- Integer
iOptions
- Integer
CapsLock_State()
check capslock bit for capslock_state
- Integer
iOptions
End_Construct_Object()
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- Grid : DfBaseFormList
Class: Grid
1. Add Standard entry support
2. Support color change when shadowed
{ OverrideProperty=Ring_State DesignTime=False }
Construct_Object()
- Integer
ScrollOnThumbTrackStateThis determines if the scroll occurs when the thumb is dragged
When false, it scrolls when the thumb is released. Only set it to
false if the scroll takes a long time.
- Integer
ThumbScrollStateThis determines if thumb should be sized proportionally to the scroll
area. When true it acts like a normal windows list. When false, you get
old vdf behavior where thumb is small and scroll moves up down one line at
a time
- Integer
CustomScrollStateIf the developer wishes to augment the vScroll messages they can shut
the existing customizations by setting this true
End_Construct_Object()
SetVScrollInfo(Integer iMin Integer iMax Integer iPage)
SetVScrollPos(Integer iPos)
SetVScrollbox(Integer iType Integer iData)
- Integer
iTop - Integer
bFast
- EntryList : DFBaseEntryList
Class: EntryList
1. Add Standard entry support
2. Support color change when shadowed
3. Help_DataFile support
4. Auto margin, type setting
{ OverrideProperty=Ring_State DesignTime=False }
- BasicPanel : DFBasePanel
-----------Container Classes---------
Class: Panel
1. Define Standard container behaviors
Construct_Object()
- Integer
Toolbar_IdSupport A Tool Bar, A Status Bar, A Client Area. We Will Assume That
All Objects At Least Understand This Protocol.
- Integer
Statusbar_Id - Integer
Client_Idself
- Handle
phoCommandBarsset by commandbars if they exist
Show_Status_Help(String Shelp)
This Will Never Get Sent To, But It Keeps The Compiler Content.
- Integer
Main_Panel_Id()
This Allows Children To Find The Parent Panel. This Seems Like A
Pretty Basic Requirement.
- Integer
Verify_Exit_Application()
Notify_Exit_Application()
Broadcast_Notify_Exit_Application()
- Integer
Broadcast_Verify_Exit_Application()
OnActivateApp()
OnDeactivateApp()
Notify_Application_Activation(Integer bActivate)
- Integer
hMain
- FloatingPanel : DFBaseToolpanel
Class: ToolPanel
1. Define Standard container behaviors
Construct_Object()
OnActivateApp()
OnDeactivateApp()
Notify_Application_Activation(Integer bActivate)
- Integer
hMain
- ToolPanel : FloatingPanel
Construct_Object()
- ModalPanel : FloatingPanel
Class ModalPanel is a ToolPanel
Procedure Construct_Object
Forward Send Construct_Object
Set Caption_bar to TRUE
Set Border_Style to Border_Dialog
Set Minimize_Icon to FALSE
Set Maximize_Icon to FALSE
Set SysMenu_Icon to TRUE
Set Modal_State to TRUE
End_Procedure // Construct_Object
- Container3d : DFBaseDialog
Construct_Object()
- Dialog : Container3d
Construct_Object()
- Group : DFBaseGroup
Class: Group
1. Define Standard container behaviors
Construct_Object()
Enable_Window(integer iState)
- Integer
hWnd
Page_Object(integer iState)
- Integer
hWnd
Shadow_Display()
- Container : Container3d
- Button : DfBasepushbutton
Class: Button
1. Set Default Size to 14 50 // (the win95 standard)
2. Standard Object
3. Label Support
4. Shadow_state support
OnClick()
Construct_Object()
KeyAction()
KeyAction is the message that should be sent to a button via
an on_key in support of an underlined hot-key indicator. For
example, setting a button label to "&Close" will create an
underlined "C", indicating to a user that Alt+C should also
be usable for "close". To support that, simply setup an on_key
message: On_Key Key_Alt+Key_C Send KeyAction to (closebutton(self))
this was modified to not send OnClick but to send Message to Aux_value.
Normally, this will be the same as onCLick (onClick will be the message and
there will be no aux_value).
- Integer
bActive - Integer
bShadow - Integer
iRetVal - Integer
hmMsg - Integer
hObj
- Integer
CurrentButtonState()
Set(Integer bState)
Set CurrentButtonState to FALSE/TRUE will cause the button to display
the "thick" border seen on "default" buttons. By Default, buttons will
now set this property to true when ever they take the focus, and false
when they lose the focus. Logic exists in "panel" objects to set a default
button which will be highlighted when needed. Note that all highlighting
is handled by calling this one message.
Get/Set CurrentButtonState is private, system maintained and dynamic.
Do not set this as part of an object's attributes.
- Integer
hWnd - Integer
hObj - Integer
iStyle - Integer
cxy - Integer
iTemp
Set(Integer bState)
Default_State is the public interface for setting the Default
Action Button at the button itself. The message CurrentButtonState
is implementation of part of the mechanism and should not be used
directly.
- Integer
Default_State()
Remove_Object()
PrivateSetCurrentButton()
This is called by notify_focus_change (in std obj mixin). With buttons
we must make sure that they are always highlighted when the focus and
not highlighted when the focus is list
Shadow_Display()
if a button is shadowed it should not be highlighted
Page_Object(Integer iState)
- Integer
iStyle
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- CheckBox : DFBaseCheckBox
*** Class: Checkbox
***
*** Assumption:
*** Must be one-item object.
***
*** 1. Label support.
*** 2. Will autosize based on setting of label if auto_size_state is True.
*** 3. Standard object mixin behaviors (help, etc.)
*** 4. Single Item behaviors for switching
Construct_Object()
- Integer
AlignmentMode
Page_Object(integer iState)
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- RadioButton : DfBaseRadioButton
*** Class: Radiobutton (useful classes are in dfradio.pkg
***
*** Assumption:
*** Must be one-item object.
***
*** 1. Label support.
*** 2. Will autosize based on setting of label.
Construct_Object()
- Integer
AlignmentMode
Private.Notify_Select_State(Integer ObjId Integer Item#)
Page_Object(integer iState)
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
SetChildToolTip(String sText)
Sent by a parent object (RadioGroup) to set all child objects to the same tooltip. This is ignored
when the child object already has a tooltip.
- String
sToolTip
- MdiClientArea : DfBaseMdiClient
Class: MdiClientArea
1. Set default properties
{ OverrideProperty=Auto_Locate_State DesignTime=False }
{ OverrideProperty=Locate_Mode DesignTime=False }
Construct_Object()
Notify_Focus_Change(Integer Fg)
OnSetFocus()
OnKillFocus()
- integer
ContainerFocusWillNotChange()
Private:
needed by navigation (next_object_id). See notes above.
This really should never get called but it needs to be understood (and not delegated)
OnPreApplySkin(Boolean bReApply)
When skins are applied to views we want to maintain the client size. I theory we want to do this to all objects
with pbSizeToClientArea=T. Views are the most likely objects to need this which is what I've tested this with.
OnPostApplySkin(Boolean bReApply)
- MdiDialog : Container3d
Class: MdiDialog
1. Define standard MDI properties
caption bar, sysmenu, minimize, no-maximize
attach-prnt-st=T, Scope=T, Ring=T, Popup=T
2. Define Ctrl+F4 - Close_client (deactivate view)
Ctrl+F6 - previous view
Alt+F6 - next view
3. Define procedures for:
Switch_next_View, Switch_Prior_View, Close_Client
4. redefine exit_appication to close_client so sysmenu works.
- TabDialog_ : DfBaseTabDialog
Construct_Object()
- TabDialog : TabDialog_
Construct_Object()
- TabPage : Container3d
Class: TabPage
1. Import all tab page behaviors
2. Understand get/set Label (sets tab values)
Construct_Object()
- Radio : RadioButton
Class: Radio
Assumption:
Object of this class is child of a "RadioGroup" or
RadioContainer Object
1. Offers radio functionality in multiple one item radios.
Construct_Object()
- integer
Activate()
- Integer
rVal
Set(integer item# integer state)
Private.Notify_Select_State(Integer ObjId Integer Item#)
Select_Toggling()
Next_Item()
- Integer
OldGrp
Previous_Item()
- Integer
OldGrp
Switch()
Switch_Back()
Mouse_Down(integer i1 integer i2)
- Integer
OldGrp
Mouse_Click(integer i1 integer i2)
- integer
Entering()
augmented to trigger a radio group entering message, if the focus is
coming from outside of the radio group
- Integer
iFail
- Integer
Exiting(Handle hoDestination)
augmented to trigger a radio group exiting message, if the focus is
moving outside of the radio group
- Integer
iFail
- RadioGroup : Group
Class: RadioGroup
Assumption:
Must be used together with one (or more) Radio child objects.
1. Offers radio functionality in multiple one item radios.
Construct_Object()
- RadioContainer : RadioGroup
Class: RadioContainer
Assumption:
Must be used together with one (or more) Radio child objects.
1. Offers radio functionality in multiple one item radios.
- ComboForm : DFBaseComboBox
{ OverrideProperty=Border_Style InitialValue=Border_Normal }
{ OverrideProperty=Search_Mode DesignTime=False }
{ OverrideProperty=Search_Case DesignTime=False }
Construct_Object()
Activating()
By default we will fill combo lists during activating. In some cases
the list may already be filled in which case nothing will happen.
as of 15.1 we changed all deactivating/activating signatures to not return values
We have not recommended using activating for return values and we don't want codesense and events to use the
get msg_activating syntax. We have not changed the actual code in unlikely case that some is successfully
using activating to return a value. This is a "if it ain't broke, don't fix it" kind of thing.
This usage is not recommended and should not be used as a sample.
returns integer
- Integer
rVal
End_Construct_Object()
Set(Integer bState)
- Integer
iOptions
- Integer
CapsLock_State()
- Integer
iOptions
Page(integer mode#)
We need to do some capslock checking with form combos.
For some reason the runtime does not recognize the capslock bit
in the form_options (as it does in form).
note that comboForm and comboEntry each need their own Page method
and not a common mixin
- Integer
iStyle - Integer
hWnd - Integer
bState
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- Boolean
pbUseFormWindowHandle()
Overridden to ensure that the combo form's Entry_State is taken into consideration.
- Boolean
bEntry
- ComboEntry : DFBaseComboBoxEntry
{ OverrideProperty=Border_Style InitialValue=Border_Normal }
{ OverrideProperty=Search_Mode DesignTime=False }
{ OverrideProperty=Search_Case DesignTime=False }
Construct_Object()
End_Construct_Object()
Activating()
By default we will fill combo lists during activating. In some cases
the list may already be filled in which case nothing will happen.
as of 15.1 we changed all deactivating/activating signatures to not return values (see windows.pkg / ComboForm / Activating for more)
returns integer
- Integer
rVal
Set(Integer bState)
With entry based objects we can set capslock by setting
the right bit in item_options AND form_Options. We use the
options message instead of the option message because form_
option doesn't seem to work right.
- Integer
iOptions
- Integer
CapsLock_State()
check capslock bit for capslock_state
- Integer
iOptions
Page(integer iState)
note that comboForm and comboEntry each need their own Page method
and not a common mixin
RequestAddToolTip()
Called by Page_Object. Handles tooltip creation. We use a dedicated
method to perform AddToolTip because it is often the case that Page_Object
is implemented in a mixin class.
RequestDeleteToolTip()
Called by Page_Object. Handles tooltip removal.
- Boolean
pbUseFormWindowHandle()
Overridden to ensure that the combo form's Entry_State is taken into consideration.
- Boolean
bEntry