737 lines
26 KiB
Plaintext
737 lines
26 KiB
Plaintext
Function O4WI_FORMDESIGNER_WIDGET_XXX(ACTION, headerInfo, formInfo, elementID, param1, param2, param3, param4, param5, param6, param7, param8)
|
|
*#!Precompile
|
|
|
|
/*
|
|
* This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without
|
|
* written permission from Revelation Technologies, Inc.
|
|
!
|
|
*
|
|
* VERSION : 1.0
|
|
*
|
|
*
|
|
* AUTHOR : Revelation Software, Inc., All Rights Reserved
|
|
*
|
|
* CREATED : July 20, 2015
|
|
*
|
|
*
|
|
!
|
|
*
|
|
* REVISION HISTORY (Most CURRENT first) :
|
|
*
|
|
* DATE IMPLEMENTOR FUNCTION
|
|
* -------- ----------- --------
|
|
*
|
|
*
|
|
*/
|
|
*
|
|
|
|
$Insert o4wcommon
|
|
$Insert o4wequates
|
|
$Insert O4W_DESIGN_FORM_EQUATES
|
|
|
|
If Assigned(ACTION) Else ACTION = ""
|
|
If Assigned(formInfo) Else formInfo = ""
|
|
If Assigned(elementID) Else elementID = ""
|
|
If Assigned(param1) Else param1 = ""
|
|
If Assigned(param2) Else param2 = ""
|
|
If Assigned(param3) Else param3 = ""
|
|
If Assigned(param4) Else param4 = ""
|
|
If Assigned(param5) Else param5 = ""
|
|
If Assigned(param6) Else param6 = ""
|
|
If Assigned(param7) Else param7 = ""
|
|
If Assigned(param8) Else param8 = ""
|
|
|
|
|
|
RSLT = ""
|
|
elementName = "Control name here"
|
|
|
|
If Not(Num(action)) Or action < WIDGET_ACTION_MIN_VALUE$ Or action > WIDGET_ACTION_MAX_VALUE$ Then
|
|
rslt = WIDGET_ACTION_INVALID$
|
|
End Else
|
|
On action Gosub doInit, getInfo, doDraw, getProps, doUpdate, doValidate, handleEvent, getPropsForTab, getValue, getRecordInfo
|
|
End
|
|
|
|
Return RSLT
|
|
|
|
|
|
doInit:
|
|
title = elementName; text = elementName; image = "../images/widgets/jqm_radio_button.svg"
|
|
param1 = title
|
|
param2 = text
|
|
param3 = image
|
|
return
|
|
|
|
|
|
GetInfo:
|
|
Gosub getFormInfo
|
|
infoTypes = param1
|
|
num.info = dcount(infoTypes, @FM)
|
|
For each.info = 1 To num.info
|
|
infoType = infoTypes<each.info>
|
|
Begin Case
|
|
Case infoType = WIDGET_INFO_CONTAINER$
|
|
* return "1" if a container and the childTYpe is allowed or Null
|
|
* return "0" if a container and the childType is NOT allowed
|
|
* return "" if not a container
|
|
childType = param2<each.info>
|
|
* DO CONTROL-SPECIFIC WORK
|
|
|
|
Case infoType = WIDGET_INFO_ASSOCIATED_LABEL$
|
|
* return "1" if this is an element that can be associated with a label
|
|
* return "" else
|
|
* DO CONTROL-SPECIFIC WORK
|
|
|
|
Case infoType = WIDGET_INFO_CAN_DELETE$
|
|
* return "1" if this element can be deleted
|
|
* return "0" if it cannot
|
|
* DO CONTROL-SPECIFIC WORK
|
|
|
|
Case infoType = WIDGET_INFO_DB$
|
|
* return the table/fieldname for this element
|
|
*If table <> "" then
|
|
* rslt = table:@VM:fieldName
|
|
*end
|
|
|
|
Case infoType = WIDGET_INFO_ID$
|
|
Rslt<each.info> = elementID:DRSuffix@
|
|
|
|
Case infoType = WIDGET_INFO_DETAILS$
|
|
* return generic info
|
|
RSLT<each.info> = COMMENT
|
|
If RSLT<each.info> = "" THEN
|
|
* DO CONTROL-SPECIFIC WORK
|
|
RSLT<each.info> = ELEMENTNAME
|
|
End
|
|
|
|
Case infoType = WIDGET_INFO_INPUT$
|
|
* return 1 if input element and enabled
|
|
* return 0 if input element and disabled
|
|
* return null otherwise
|
|
If roFlag <> "1" Then
|
|
rslt<each.info> = "1"
|
|
End Else
|
|
rslt<each.info> = "0"
|
|
end
|
|
|
|
Case infoType = WIDGET_INFO_ALIGN$
|
|
rslt<each.info> = controlalign
|
|
|
|
Case infoType = WIDGET_INFO_BGCOLOR$
|
|
rslt<each.info> = bgcolor
|
|
|
|
Case infoType = WIDGET_INFO_EVENTS$
|
|
If cmBefore Then
|
|
rslt<each.info,1,-1> = WIDGET_EVENT_BEFORE$
|
|
rslt<each.info,2,-1> = "N/A"
|
|
End
|
|
If cmAfter Then
|
|
rslt<each.info,1,-1> = WIDGET_EVENT_AFTER$
|
|
rslt<each.info,2,-1> = "N/A"
|
|
End
|
|
If cmChange Then
|
|
rslt<each.info,1,-1> = WIDGET_EVENT_CHANGED$
|
|
rslt<each.info,2,-1> = "N/A"
|
|
End
|
|
If updateAssociated <> "" Then
|
|
rslt<each.info,1, -1> = WIDGET_EVENT_ASSOCIATED$
|
|
rslt<each.info,2,-1> = updateAssociated
|
|
End
|
|
|
|
Case infoType = WIDGET_INFO_NAME$
|
|
rslt<each.info> = name
|
|
|
|
End Case
|
|
Next each.info
|
|
Return
|
|
|
|
|
|
doValidate:
|
|
Gosub getFormInfo
|
|
updateList = ""
|
|
|
|
If COMMENT = "" And table <> "" Then
|
|
comment = Xlate("DICT.":table, fieldname, 3, "X")
|
|
Convert @VM:@SVM:@TM To " " In comment
|
|
FORMINFO<FORMINFO_COMMENT$, POSN> = COMMENT
|
|
End
|
|
|
|
* DO CONTROL-SPECIFIC WORK
|
|
rslt = O4WI_FORMDESIGNER_WIDGET_HELPER("VALIDATE_ADV", headerInfo, formInfo, "","","", adv_props)
|
|
|
|
If rslt = "" then
|
|
Gosub handleAssociated
|
|
end
|
|
|
|
param1 = updateList
|
|
Return
|
|
|
|
|
|
handleEvent:
|
|
setupInfo = param1
|
|
event = setupInfo<1>
|
|
runMode = setupInfo<2>
|
|
bMobile = setupInfo<3>
|
|
suffix = setupInfo<4>
|
|
save.drrecords = DRRecords@
|
|
save.keys = DRKeys@
|
|
Gosub getValue
|
|
DRRecords@ = param4
|
|
DRKeys@ = param5
|
|
|
|
Begin Case
|
|
Case event _eqc "CHANGE"
|
|
If updateAssociated <> "" Then
|
|
* tell all the associated fields that they must be redrawn
|
|
numAssociated = dcount(updateAssociated, @TM)
|
|
For each.associated = 1 To numAssociated
|
|
this.other = Field(updateAssociated, @TM, each.associated)
|
|
needRefresh = o4wi_formdesigner_helper(this.other, headerInfo, formInfo, "1", runMode, bMobile, err)
|
|
Next each.associated
|
|
rslt = 1 ;* report that this has been handled here
|
|
End
|
|
If cmChange Then
|
|
* call the commuter module
|
|
end
|
|
Case event _eqc "PRE_FIELD"
|
|
If cmBefore Then
|
|
* call the commuter module
|
|
end
|
|
Case event _eqc "POST_FIELD"
|
|
If cmAfter Then
|
|
* call the commuter module
|
|
end
|
|
End Case
|
|
DRRecords@ = save.DRRecords
|
|
DRKeys@ = save.Keys
|
|
Return
|
|
|
|
doDraw:
|
|
setupInfo = param1
|
|
isReplace = param4 + 0
|
|
|
|
runMode = setupInfo<1>
|
|
bMobile = setupInfo<2>
|
|
parentStyles = setupInfo<3>
|
|
* if isReplace, and we can't just update our value/style, we have to redraw our parent and ourselves
|
|
parentSectionID = setupInfo<4>
|
|
parentSectionStyle = setupInfo<5>
|
|
needRefresh = 0
|
|
|
|
Gosub getFormInfo
|
|
Gosub getRecordInfo
|
|
|
|
oldUIFlag = headerInfo<HEADER_UI_MODE$>+0
|
|
inlinePromptFlag = (headerInfo<HEADER_DEFAULT_LABELTYPE$> = HEADER_DEFAULT_LABELTYPE_INLINE$)
|
|
|
|
* DO CONTROL-SPECIFIC WORK
|
|
If DRROOverrideFlag@ <> "" Then
|
|
roFlag = DRROOverrideFlag@
|
|
end
|
|
If roFlag Then
|
|
style := @SVM:"readOnly"
|
|
End Else
|
|
style := @SVM:"readWrite"
|
|
end
|
|
If oldUIFlag Then
|
|
style := @SVM:"classicUI"
|
|
End
|
|
|
|
Style := @SVM:classes
|
|
num.data = dcount(datastyles_names, @TM)
|
|
For each.data = 1 To num.data
|
|
Style := @SVM:o4wdatastyle("", Field(datastyles_names, @TM, each.data), Field(datastyles_values, @TM, each.data))
|
|
Next each.data
|
|
|
|
If isReplace Then
|
|
* use o4wupdate
|
|
End Else
|
|
* draw for real
|
|
If html_before <> "" Then
|
|
o4wraw(html_before)
|
|
End
|
|
* element specific instructions
|
|
If html_after <> "" Then
|
|
o4wraw(html_after)
|
|
end
|
|
End
|
|
|
|
param2 = "0" ;* must call "buildParent"?
|
|
param3 = "" ;*blankLine:@FM:sizeStyle:@FM:specialStyle:@FM:divHeader:@FM:divHeaderSize
|
|
|
|
rslt = needRefresh
|
|
return
|
|
|
|
getValue:
|
|
Gosub getFormInfo
|
|
currentValue = ""
|
|
iValue = ""
|
|
dict.Info = ""
|
|
atRecord = ""
|
|
recordList = ""
|
|
keyList = DRKeys@
|
|
posn = ""
|
|
convError = ""
|
|
special.conv = ""
|
|
If table <> "" And fieldName <> "" then
|
|
Locate table In DRTables@ using @FM setting posn Else
|
|
DRTables@<posn> = table
|
|
end
|
|
Open "DICT",table To @DICT Else null
|
|
Read dict.info From @DICT, fieldName Else dict.Info = ""
|
|
atrecord = Field(DRRecords@, @RM, posn)
|
|
key = DRKeys@<posn, 1>
|
|
end
|
|
bUseDict = 0
|
|
Begin Case
|
|
Case conv_i = "NONE"
|
|
conv_i = ""
|
|
Case conv_i = "USER"
|
|
*conv_i = conv_i_userdef
|
|
Case conv_i = "-"
|
|
conv_i =dict.info<11>
|
|
bUseDict = 1
|
|
End Case
|
|
currentValue = o4wGetValue(name)
|
|
iValue = currentValue
|
|
If conv_i <> "" Then
|
|
* Convert 'standard' user-defined formats to our own (non-ui) versions
|
|
Swap "EMAIL_FORMAT" With "EMAIL_FORMAT_INTERNAL" In conv_i
|
|
Swap "PHONE_FORMAT" With "PHONE_FORMAT_INTERNAL" In conv_i
|
|
Swap "ZIP_FORMAT" With "ZIP_FORMAT_INTERNAL" In conv_i
|
|
Swap "SSN_FORMAT" With "SSN_FORMAT_INTERNAL" In conv_i
|
|
status() = 0
|
|
If bUseDict Then
|
|
* use in.value to handle the validation/input conversion
|
|
Declare Function in.value
|
|
bIsValid = 1
|
|
num.vals = dcount(iValue, @VM)
|
|
iNewValue = ""
|
|
For each.val = 1 To num.vals While bIsValid
|
|
this.newValue = iValue<1,each.val>
|
|
this.iNewValue = in.value(this.newValue, conv_i, bIsValid)
|
|
If bIsValid = 0 And conv_i[1,1] <> "(" Then
|
|
bIsValid = 1
|
|
this.iNewValue = in.value(this.newValue, "(":conv_i:")", bIsValid)
|
|
End
|
|
If (bIsValid = 0 Or status()) Then
|
|
bIsValid = 0
|
|
convError<1,-1> = "Error converting '":this.newValue:"' using conversion code '":conv_i:"'"
|
|
End
|
|
iValue<1, each.val> = this.iNewValue
|
|
Next each.val
|
|
End else
|
|
iValue = Iconv(iValue, conv_i)
|
|
If status() Then
|
|
convError<1,-1> = "Error converting '":currentValue:"' using conversion code '":conv_i:"'"
|
|
End
|
|
End
|
|
* don't really care (here) if it's an invalid value...
|
|
status() = 0
|
|
* special case for MC (masked character) conversions - ONLY operate as OCONV
|
|
If (conv_i = "MCU" Or conv_i = "MCL") And special.conv = "" Then
|
|
special.conv = conv_i[3,1]
|
|
end
|
|
end
|
|
If special.conv <> "" Then
|
|
* special.conv is either U or L to uppercase or lowercase the input value
|
|
currentValue = Oconv(iValue, "MC":special.conv)
|
|
end
|
|
param1 = currentValue
|
|
param2 = iValue
|
|
If roFlag <> "1" And DRROOverrideFlag@ <> "1" And dict.Info <> "" Then
|
|
If dict.info<1>[1,1] = "F" Or dict.info<1>[1,1] = "S" Then
|
|
fieldNo = dict.info<2>
|
|
If Num(fieldNo) And fieldNo <> "" Then
|
|
If fieldNo = 0 Then
|
|
keyPart = dict.info<5>
|
|
If Num(keyPart) And keyPart <> "" And keyPart <> "0" Then
|
|
key = fieldstore(key, "*", keyPart, 1, iValue)
|
|
End Else
|
|
key = iValue
|
|
end
|
|
keyList<posn, 1> = key
|
|
End else
|
|
atRecord<fieldNo> = iValue
|
|
recordList = fieldstore(DRRecords@, @RM, posn, 1, atRecord)
|
|
end
|
|
end
|
|
End
|
|
End
|
|
param3 = atRecord
|
|
param4 = recordList
|
|
param5 = keyList
|
|
param6 = convError
|
|
Return
|
|
|
|
getPropsForTab:
|
|
passedInfo = param1
|
|
currTab = param2
|
|
|
|
If currTab _nec PROPS_TAB_NAME_FMT$ Then Return ;* only care when we leave the db tab
|
|
|
|
* get the current info
|
|
reqd_props = passedInfo<FORMINFO_PARAM_R$>
|
|
opt_props = passedInfo<FORMINFO_PARAM_O$>
|
|
db_props = passedInfo<FORMINFO_DB_INFO$>
|
|
fmt_props = passedInfo<FORMINFO_FMT_INFO$>
|
|
mob_props = passedInfo<FORMINFO_MOB_INFO$>
|
|
evt_props = passedInfo<FORMINFO_EVT_INFO$>
|
|
adv_props = passedInfo<FORMINFO_ADV_INFO$>
|
|
parent = passedInfo<FORMINFO_PARENT$>
|
|
|
|
Gosub extractDetails
|
|
|
|
* something here has changed - reset the fields
|
|
reqd_info = ""
|
|
opts_info = ""
|
|
db_info = ""
|
|
fmt_info = ""
|
|
mob_info = ""
|
|
evt_info = ""
|
|
adv_info = ""
|
|
propName = elementName
|
|
Gosub getPropsFmt
|
|
|
|
param3 = PROPS_TAB_NUM_FMT$
|
|
param4 = FMT_info
|
|
|
|
Return
|
|
|
|
getProps:
|
|
passedInfo = param1
|
|
reqd_props = passedInfo<FORMINFO_PARAM_R$>
|
|
opt_props = passedInfo<FORMINFO_PARAM_O$>
|
|
db_props = passedInfo<FORMINFO_DB_INFO$>
|
|
fmt_props = passedInfo<FORMINFO_FMT_INFO$>
|
|
mob_props = passedInfo<FORMINFO_MOB_INFO$>
|
|
evt_props = passedInfo<FORMINFO_EVT_INFO$>
|
|
adv_props = passedInfo<FORMINFO_ADV_INFO$>
|
|
parent = passedInfo<FORMINFO_PARENT$>
|
|
|
|
Gosub extractDetails
|
|
|
|
reqd_info = ""
|
|
opts_info = ""
|
|
db_info = ""
|
|
fmt_info = ""
|
|
mob_info = ""
|
|
evt_info = ""
|
|
adv_info = ""
|
|
propName = ""
|
|
|
|
* DO CONTROL-SPECIFIC WORK
|
|
adv_info = O4WI_FORMDESIGNER_WIDGET_HELPER("DISPLAY_ADV", headerInfo, formInfo, "","","", adv_props)
|
|
|
|
|
|
* SET UP PROPNAME, XXX_INFO
|
|
getPropsFmt:
|
|
|
|
param2 = reqd_info
|
|
param3 = opts_info
|
|
param4 = db_info
|
|
param5 = fmt_info
|
|
param6 = mob_info
|
|
param7 = evt_info
|
|
param8 = adv_info
|
|
rslt = propName
|
|
Return
|
|
|
|
getFormInfo:
|
|
bFound = 0
|
|
comment = ""
|
|
ctype = ""
|
|
parent = ""
|
|
children = ""
|
|
reqd_props = ""
|
|
opt_props = ""
|
|
db_props = ""
|
|
fmt_props = ""
|
|
mob_props = ""
|
|
evt_props = ""
|
|
adv_props = ""
|
|
locn = ""
|
|
associated = ""
|
|
Locate elementID In formInfo<FORMINFO_ID$> using @VM setting posn Then
|
|
bFound = 1
|
|
COMMENT = FORMINFO<FORMINFO_COMMENT$, POSN>
|
|
CTYPE = FORMINFO<FORMINFO_TYPE$, POSN>
|
|
PARENT = FORMINFO<FORMINFO_PARENT$, POSN>
|
|
CHILDREN = FORMINFO<FORMINFO_CHILDREN$, POSN>
|
|
REQD_PROPS = FORMINFO<FORMINFO_PARAM_R$, POSN>
|
|
OPT_PROPS = FORMINFO<FORMINFO_PARAM_O$, POSN>
|
|
db_props = forminfo<FORMINFO_DB_INFO$, POSN>
|
|
fmt_props = forminfo<FORMINFO_FMT_INFO$, POSN>
|
|
mob_props = forminfo<FORMINFO_MOB_INFO$, POSN>
|
|
evt_props = formInfo<FORMINFO_EVT_INFO$, POSN>
|
|
adv_props = formInfo<FORMINFO_ADV_INFO$, POSN>
|
|
LOCN = FORMINFO<FORMINFO_POSN$, POSN>
|
|
ASSOCIATED = FORMINFO<FORMINFO_ASSOCIATED$, POSN>
|
|
ASSOCIATED_LABEL_TYPE = FORMINFO<FORMINFO_LABEL_TYPE$, POSN>
|
|
end
|
|
* fall through to extractDetails
|
|
|
|
extractDetails:
|
|
* PULL OUT CONTROL-SPECIFIC DETAILS
|
|
dummy = O4WI_FORMDESIGNER_WIDGET_HELPER("EXTRACT_ADV", headerInfo, formInfo, "","","", adv_props, html_before, html_after, classes, datastyles_names, datastyles_values)
|
|
|
|
Return
|
|
|
|
/*
|
|
AddElement:
|
|
newPosn = o4wi_formdesigner_widget_new(headerInfo, formInfo, thisID, parent, childtype, prop_locn, elementID, bProtected, addBefore)
|
|
Return
|
|
*/
|
|
|
|
handleAssociated:
|
|
If associated = "" Then return
|
|
Locate associated<1,1,1> In formInfo<FORMINFO_ID$> using @VM setting aPos then
|
|
CTYPE = formInfo<FORMINFO_TYPE$, aPos>
|
|
supportName = UCASE(DESIGN_SUPPORT_PREFIX$:CTYPE)
|
|
whichTypes = ""
|
|
whichValues = ""
|
|
* headerText = opt_props<1,1,2>
|
|
* headerSize = opt_props<1,1,3>
|
|
*whichTypes = "TEXT":@fm:"SIZE"
|
|
*whichValues = headerText:@FM:headerSize
|
|
call @supportName(WIDGET_ACTION_UPDATE$, headerInfo, formInfo, associated, elementID, whichTypes, whichValues)
|
|
End
|
|
Return
|
|
|
|
doUpdate:
|
|
* our associated element has changed - update ourselves
|
|
Gosub getFormInfo
|
|
|
|
associatedID = param1
|
|
whichParameter = param2
|
|
newValues = param3
|
|
num.params = dcount(whichParameter, @FM)
|
|
For each.param = 1 To num.params
|
|
this.param = whichParameter<each.param>
|
|
this.value = newValues<each.param>
|
|
Begin Case
|
|
case this.param = WIDGET_MSG_LABEL$ Or this.param = WIDGET_MSG_LEGEND$
|
|
reqd_props<1,1,1> = this.value
|
|
Case this.param = WIDGET_MSG_BTN_DEFAULT$
|
|
If this.value = "0" Or this.value = "1" then
|
|
reqd_props<1,1,2> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_OMIT_LABEL$
|
|
If this.value = "0" Or this.value = "1" then
|
|
reqd_props<1,1,2> = this.value + 0
|
|
End
|
|
Case this.param = WIDGET_MSG_LABEL_PLACEMENT$
|
|
reqd_props<1,1,3> = this.value
|
|
Case this.param = WIDGET_MSG_NAME$
|
|
reqd_props<1,1,4> = this.value
|
|
|
|
|
|
Case this.param = WIDGET_MSG_FONT_NAME$
|
|
fmt_props<1,1,1> = this.value
|
|
Case this.param = WIDGET_MSG_FONT_COLOR_BG$
|
|
fmt_props<1,1,2> = this.value
|
|
Case this.param = WIDGET_MSG_FONT_COLOR_FG$
|
|
fmt_props<1,1,3> = this.value
|
|
Case this.param = WIDGET_MSG_FONT_BOLD$
|
|
if this.value = "0" or this.value = "1" then
|
|
fmt_props<1,1,4> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_FONT_ITALIC$
|
|
if this.value = "0" or this.value = "1" then
|
|
fmt_props<1,1,5> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_FONT_ALIGN$
|
|
if num(this.value) then
|
|
fmt_props<1,1,6> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_FONT_SIZE$
|
|
fmt_props<1,1,7> = this.value
|
|
Case this.param = WIDGET_MSG_CONTROL_ALIGN$
|
|
If Num(this.value) Then
|
|
fmt_props<1,1,8> = this.value
|
|
end
|
|
|
|
Case this.param = WIDGET_MSG_MOB_ICON$
|
|
mob_props<1,1,1> = this.value
|
|
Case this.param = WIDGET_MSG_MOB_THEME$
|
|
mob_props<1,1,2> = this.value
|
|
Case this.param = WIDGET_MSG_MOB_LAYOUT$
|
|
mob_props<1,1,3> = this.value
|
|
Case this.param = WIDGET_MSG_MOB_MINI$
|
|
If this.value = "0" Or this.value = "1" then
|
|
mob_props<1,1,4> = this.value
|
|
end
|
|
|
|
Case this.param = WIDGET_MSG_OPT_HEIGHT$
|
|
opt_props<1,1,1> = this.value
|
|
Case this.param = WIDGET_MSG_OPT_WIDTH$
|
|
opt_props<1,1,2> = this.value
|
|
Case this.param = WIDGET_MSG_SELECT_MULTI$
|
|
If this.value = "0" Or this.value = "1" then
|
|
opt_props<1,1,3> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_SUPPRESS_DESIGN$
|
|
If this.value = "0" Or this.value = "1" then
|
|
opt_props<1,1,4> = this.value
|
|
End
|
|
|
|
Case this.param = WIDGET_MSG_DB_TABLE$
|
|
db_props<1,1,1> = this.value
|
|
Case this.param = WIDGET_MSG_DB_FIELD$
|
|
db_props<1,1,2> = this.value
|
|
Case this.param = WIDGET_MSG_DB_MV$
|
|
If this.value = "0" Or this.value = "1" then
|
|
db_props<1,1,3> = this.value + 0
|
|
end
|
|
Case this.param = WIDGET_MSG_CONV_O$
|
|
db_props<1,1,4> = this.value
|
|
Case this.param = WIDGET_MSG_CONV_O_USER$
|
|
db_props<1,1,5> = this.value
|
|
Case this.param = WIDGET_MSG_CONV_I$
|
|
db_props<1,1,6> = this.value
|
|
Case this.param = WIDGET_MSG_CONV_I_USER$
|
|
db_props<1,1,5> = this.value
|
|
|
|
Case this.param = WIDGET_MSG_SET_SHOWNONE$
|
|
If this.value = "0" Or this.value = "1" then
|
|
db_props<1,1,5> = this.value
|
|
End
|
|
|
|
|
|
Case this.param = WIDGET_MSG_LINK$
|
|
If this.value = "" Or this.value = "0" Then
|
|
* no link here
|
|
opt_props<1,1,1> = 0
|
|
opt_props<1,1,2> = ""
|
|
opt_props<1,1,3> = ""
|
|
End Else If this.value = "1" then
|
|
* link here
|
|
opt_props<1,1,1> = 1
|
|
end
|
|
Case this.param = WIDGET_MSG_LINK_TYPE$
|
|
If opt_props<1,1,1> = "1" Or opt_props<1,1,1> = "" Then
|
|
opt_props<1,1,1> = "1"
|
|
opt_props<1,1,2> = this.value
|
|
End
|
|
Case this.param = WIDGET_MSG_LINK_URL$
|
|
If opt_props<1,1,1> = "1" Or opt_props<1,1,1> = "" Then
|
|
opt_props<1,1,1> = "1"
|
|
opt_props<1,1,3> = this.value
|
|
End
|
|
|
|
|
|
Case this.param = WIDGET_MSG_EVENT_POPUP$
|
|
If this.value = "1" Or this.value = "0" Then
|
|
evt_props<1,1,1> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_EVENT_CLICK$
|
|
If this.value = "1" Or this.value = "0" Then
|
|
evt_props<1,1,2> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_EVENT_UPDATE_ASSOCIATED$
|
|
evt_props<1,1,1> = this.value
|
|
Case this.param = WIDGET_MSG_EVENT_BEFORE$
|
|
If this.value = "1" Or this.value = "0" Then
|
|
evt_props<1,1,2> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_EVENT_CHANGED$
|
|
If this.value = "1" Or this.value = "0" Then
|
|
evt_props<1,1,3> = this.value
|
|
end
|
|
Case this.param = WIDGET_MSG_EVENT_AFTER$
|
|
If this.value = "1" Or this.value = "0" Then
|
|
evt_props<1,1,4> = this.value
|
|
end
|
|
|
|
|
|
Case this.param = WIDGET_MSG_LIST_SOURCE$
|
|
reqd_props<1,1,3> = this.value
|
|
Case this.param = WIDGET_MSG_LIST_TABLE$ Or this.param = WIDGET_MSG_LIST_STPROC$
|
|
reqd_props<1,1,4> = this.value
|
|
Case this.param = WIDGET_MSG_LIST_CODE_RECORD$
|
|
reqd_props<1,1,5> = this.value
|
|
Case this.param = WIDGET_MSG_LIST_CODE_FIELD_VALUE$ Or this.param = WIDGET_MSG_LIST_SELECT$
|
|
reqd_props<1,1,6> = this.value
|
|
Case this.param = WIDGET_MSG_LIST_CODE_FIELD_DESC$
|
|
If reqd_props<1,1,3> = "2" Then
|
|
reqd_props<1,1,7> = this.value
|
|
End Else
|
|
reqd_props<1,1,5> = this.value
|
|
End
|
|
Case this.param = WIDGET_MSG_LABEL_TYPE$
|
|
ASSOCIATED_LABEL_TYPE = this.value
|
|
Case 1
|
|
* see if these are advanced properties
|
|
dummy = O4WI_FORMDESIGNER_WIDGET_HELPER("UPDATE_ADV", headerInfo, formInfo, "","","", adv_props, this.param, this.value)
|
|
|
|
End CASE
|
|
Next each.param
|
|
|
|
* make sure forminfo is updated
|
|
FORMINFO<FORMINFO_COMMENT$, POSN> = COMMENT
|
|
FORMINFO<FORMINFO_TYPE$, POSN> = CTYPE
|
|
FORMINFO<FORMINFO_PARENT$, POSN> = PARENT
|
|
FORMINFO<FORMINFO_CHILDREN$, POSN> = CHILDREN
|
|
FORMINFO<FORMINFO_PARAM_R$, POSN> = REQD_PROPS
|
|
FORMINFO<FORMINFO_PARAM_O$, POSN> = OPT_PROPS
|
|
forminfo<FORMINFO_DB_INFO$, POSN> = db_props
|
|
forminfo<FORMINFO_FMT_INFO$, POSN> = fmt_props
|
|
formInfo<FORMINFO_MOB_INFO$, POSN> = mob_props
|
|
formInfo<FORMINFO_EVT_INFO$, POSN> = evt_props
|
|
formInfo<FORMINFO_ADV_INFO$, POSN> = adv_props
|
|
FORMINFO<FORMINFO_POSN$, POSN> = LOCN
|
|
FORMINFO<FORMINFO_ASSOCIATED$, POSN> = ASSOCIATED
|
|
FORMINFO<FORMINFO_LABEL_TYPE$, POSN> = ASSOCIATED_LABEL_TYPE
|
|
|
|
Return
|
|
|
|
|
|
getRecordInfo:
|
|
currentValue = ""
|
|
iValue = ""
|
|
If runMode = 1 then
|
|
If Len(TABLE) then
|
|
Locate table In DRTables@ using @FM setting posn Else posn = 1
|
|
Open "DICT",table To @DICT then
|
|
Read dict.info From @DICT, fieldName Else dict.Info = ""
|
|
Begin Case
|
|
Case conv_o = "NONE"
|
|
conv_o = ""
|
|
Case conv_o = "USER"
|
|
*conv_o = conv_o_userdef
|
|
Case conv_o = "-"
|
|
conv_o = dict.info<7>
|
|
End Case
|
|
Begin Case
|
|
Case conv_i = "NONE"
|
|
conv_i = ""
|
|
Case conv_i = "USER"
|
|
*conv_i = conv_i_userdef
|
|
Case conv_i = "-"
|
|
conv_i = dict.info<11>
|
|
End Case
|
|
@record = Field(DRRecords@, @RM, posn)
|
|
@id = DRKeys@<posn,1>
|
|
valno = DRKeys@<posn, 2>
|
|
iValue = calculate(fieldName)
|
|
end
|
|
End
|
|
If bIsMV then
|
|
DRNumMV@ = dcount(iValue, @VM)
|
|
If DRMV@ + 0 Then
|
|
iValue = iValue<1, DRMV@>
|
|
End Else If DRNumMV@ > 1 Then
|
|
If valno Then
|
|
iValue = iValue<1, valno>
|
|
DRNumMV@ = 1 ;* if we've got a valno in the key list, then we just want _this_ value
|
|
End Else
|
|
* TO DO
|
|
end
|
|
End
|
|
end
|
|
currentValue = iValue
|
|
If conv_o <> "" then
|
|
currentValue = Oconv(iValue, conv_o)
|
|
end
|
|
End
|
|
return
|