Function O4WI_FORMDESIGNER_PAGE_XXX(ACTION, headerInfo, formInfo_Orig, uniqueid, ctlentid, event, param1, param2, param3, status) *#!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 $Insert O4W_COMMUTER_COMMON Declare Function Repository, Function, RTI_VERIFY_PROC If Assigned(ACTION) Else ACTION = "" If Assigned(HEADERINFO) Else HEADERINFO = "" If Assigned(FORMINFO_ORIG) Else FORMINFO_ORIG = "" If Assigned(UNIQUEID) Else UNIQUEID = "" If Assigned(param1) Else param1 = "" If Assigned(param2) Else param2 = "" If Assigned(param3) Else param3 = "" If Assigned(status) Else status = "" If pageNo@ = "" Then pageNo@ = 1 If pageNo@ <> headerinfo Then * must load in the current page Read formInfo From o4wtempfile%, uniqueID:"_PAGE_":pageNo@ Else formInfo = "" End Else formInfo = formInfo_Orig end Equ page_desc$ To "Generic" If formInfo = "" Then Gosub setDefaults End Else Gosub updateHeader end RSLT = "" If Not(Num(ACTION)) Or ACTION < PAGEWIDGET_ACTION_MIN_VALUE$ Or ACTION > PAGEWIDGET_ACTION_MAX_VALUE$ Then rslt = WIDGET_ACTION_INVALID$ End Else On action Gosub doPreDraw, doDraw, handleResults, doPropsShow, doPropsSave, doSaveDefaults End Return RSLT doPropsShow: O4WSectionStart("specialSection", o4wmarkedoptions(1):o4wresponseoptions()) num.fields = dcount(formInfo, @VM) o4wtablestart("fieldTable") For each.Field = 1 To num.fields id = forminfo type = formInfo supportName = UCASE(DESIGN_SUPPORT_PREFIX$:Type) IF RTI_VERIFY_PROC(supportName, 0, 5) = 0 THEN CALL SET_STATUS(0) END Else pInfo = Function(@supportName(WIDGET_ACTION_INFO$, headerInfo, formInfo, id, WIDGET_INFO_DB$)) If pInfo <> "" Then end end Next each.field o4wbutton("OK", "BTN_PPROPS_OK", O4WMARKEDOPTIONS(1)) o4wspace(3) o4wbutton("Cancel", "BTN_DISCARD_NO") O4WQUALIFYEVENT("BTN_PPROPS_OK", "CLICK") O4WQUALIFYEVENT("BTN_DISCARD_NO", "CLICK") o4wsectionend("specialSection") o4wdialog("specialSection", page_desc$:" Properties") Return doPropsSave: NAMES = "CLEAR" values = "" Gosub doUpdate2 values = o4wgetvalue("KEYFIELD") names = "KEYFIELD" Gosub doUpdate2 Return doUpdate: names = param1 values = param2 doUpdate2: num.names = dcount(names, @FM) For each.name = 1 To num.names this.name = names this.value = values Begin Case Case this.name = "CLEAR" formInfo = HEADER_TAG_VERSION$ formInfo = HEADER_TAG_VERSION_VALUE$ Case this.name = "KEYFIELD" End Case Next each.name Return doPreDraw: DRROOverrideFlag@ = "" DRShowNoneOverrideFlag@ = "" Return doDraw: Return handleResults: runMode = param1 bMobile = param2 bHandled = 0 If bHandled = 0 Then * call into the helper to handle this rslt = O4WI_FORMDESIGNER_PAGE_HELPER("EVENT", headerInfo, formInfo, errs, runMode, bMobile, ctlentid, event, uniqueID) end Return setDefaults: formInfo = HEADER_TAG_VERSION$ formInfo = HEADER_TAG_VERSION_VALUE$ num.fields = dcount(formInfo, @VM) buttons = "" firstField = "" For each.Field = 1 To num.fields id = forminfo type = formInfo supportName = UCASE(DESIGN_SUPPORT_PREFIX$:Type) IF RTI_VERIFY_PROC(supportName, 0, 5) = 0 THEN CALL SET_STATUS(0) END Else If type = CONTROL_TYPE_BUTTON$ Or type = CONTROL_TYPE_M_BUTTON$ Then pInfo = Function(@supportName(WIDGET_ACTION_INFO$, headerInfo, formInfo, id, WIDGET_INFO_NAME$)) bName = ID If pInfo <> "" Then bName = pInfo<1> End buttons<1,-1> = id buttons<2,-1> = bName End else pInfo = Function(@supportName(WIDGET_ACTION_INFO$, headerInfo, formInfo, id, WIDGET_INFO_DB$:@FM:WIDGET_INFO_INPUT$)) If pInfo<1,1> <> "" And pInfo[1,1] <> "<" And pInfo<2> = "1" Then Locate id In formInfo using @VM setting posn Else null formInfo = id tableName = pInfo<1,1> fieldName = pInfo<1,2> conv_o = pInfo<1,5> pType = "0" ;* default to prompt skipIfNull = 1 ;* default to true sType = 0 ;* default to unchanged jType = "0" ;* default to and addl = "" details = "IMP":@SVM:ptype:@SVM:addl:@SVM:type:@SVM:tableName:@SVM:fieldName:@SVM:conv_o:@SVM:skipIfNull:@SVM:sType:@SVM:jType formInfo = details If pInfo<2> = "1" And firstField = "" Then firstField = id End end End Next each.Field num.buttons = dcount(buttons<1>, @VM) For each.button = 1 To num.buttons this.button = buttons<1, each.button> this.button.name = buttons<2, each.button> If this.button = "" Then this.button = " " bType = "" unassignedCnt = 1 Begin Case Case indexc(this.button.name, "read", 1) Or indexc(this.button.name, "go", 1) bType = TRIGGER_EVENT_READ$ Case indexc(this.button.name, "search", 1) bType = TRIGGER_EVENT_SEARCH$ Case indexc(this.button.name, "forward", 1) Or indexc(this.button.name, "next", 1) bType = TRIGGER_EVENT_FORWARD$ Case indexc(this.button.name, "prev", 1) Or indexc(this.button.name, "back", 1) bType = TRIGGER_EVENT_BACK$ Case indexc(this.button.name, "save", 1) btype = TRIGGER_EVENT_SAVE$ Case indexc(this.button.name, "cancel", 1) btype = TRIGGER_EVENT_CANCEL$ Case indexc(this.button.name, "del", 1) btype = TRIGGER_EVENT_DEL$ Case indexc(this.button.name, "new", 1) btype = TRIGGER_EVENT_NEW$ Case indexc(this.button.name, "qbf", 1) * not an assignable type CASE unassignedCnt = 1 bType = TRIGGER_EVENT_SEARCH$ unassignedCnt += 1 CASE unassignedCnt = 2 bType = TRIGGER_EVENT_CANCEL$ unassignedCnt += 1 CASE unassignedCnt = 3 bType = TRIGGER_EVENT_FORWARD$ unassignedCnt += 1 CASE unassignedCnt = 4 bType = TRIGGER_EVENT_BACK$ unassignedCnt += 1 CASE unassignedCnt = 5 bType = TRIGGER_EVENT_NEW$ unassignedCnt += 1 CASE unassignedCnt = 6 bType = TRIGGER_EVENT_DEL$ unassignedCnt += 1 CASE unassignedCnt = 7 bType = TRIGGER_EVENT_READ$ unassignedCnt += 1 CASE unassignedCnt = 8 btype = TRIGGER_EVENT_SAVE$ unassignedCnt += 1 End CASE If bType <> "" Then * bzs 011721 swapped for version 2.0 formInfo = Insert(formInfo, FORMINFO_PAGE_CONTROL_HDR$, 1, 0, this.button) formInfo = Insert(formInfo, FORMINFO_PAGE_CONTROL$, 1, 0, bType) If bType = TRIGGER_EVENT_NEW$ Then * default to 'user entered' key formInfo = Insert(formInfo, FORMINFO_PAGE_CONTROL_HDR$, 1, 0, HEADER_TAG_NEW_DETAIL$) formInfo = Insert(formInfo, FORMINFO_PAGE_CONTROL$, 1, 0, "U") end end Next each.button If firstField <> "" Then formInfo = HEADER_TAG_FOCUS$ formInfo = firstField end Return updateHeader: * bzs 011721 make sure header info is in new format If formInfo <> HEADER_TAG_VERSION$ Or formInfo <> HEADER_TAG_VERSION_VALUE$ Then NUM.HDR = DCOUNT(forminfo, @VM) NEW.HDR = HEADER_TAG_VERSION$ NEW.DETAILS = HEADER_TAG_VERSION_VALUE$ For EACH.HDR = 1 To NUM.HDR this.element = formInfo this.detail = formInfo Begin Case Case THIS.ELEMENT = HEADER_TAG_VERSION$ * ignored - already updated Case this.element = TRIGGER_EVENT_DEL$ Or this.element = TRIGGER_EVENT_CANCEL$ Or this.element = TRIGGER_EVENT_NEW$ Or this.element = TRIGGER_EVENT_SAVE$ Or this.element = TRIGGER_EVENT_READ$ * swap these NEW.HDR<1,-1> = this.detail ;* button ID NEW.DETAILS<1,-1> = this.element ;* action name Case this.element = HEADER_TAG_FOCUS$ Or THIS.ELEMENT = HEADER_TAG_NEW_DETAIL$ Or THIS.ELEMENT = HEADER_TAG_PREDRAW_EVENT$ Or THIS.ELEMENT = HEADER_TAG_POSTDRAW_EVENT$ Or THIS.ELEMENT = HEADER_TAG_CUSTOM_EVENT$ * these belong in the options formInfo = THIS.ELEMENT formInfo = THIS.DETAIL Case 1 * these are OK NEW.HDR<1,-1> = this.element NEW.DETAILS<1,-1> = this.detail End case Next EACH.HDR formInfo = NEW.HDR formInfo = NEW.DETAILS NUM.OPTIONS = DCOUNT(formInfo, @VM) NEW.HDR = "" NEW.DETAILS = "" For EACH.HDR = 1 To NUM.HDR THIS.ELEMENT = formInfo THIS.DETAIL = formInfo Begin Case Case this.element = "MAXSEARCH" Or THIS.element = "WARNSEARCH" Or this.element = "TRIGGER_TYPE" NEW.HDR<1,-1> = "<":THIS.ELEMENT:">" NEW.DETAILS<1,-1> = THIS.DETAIL Case this.element = "QBFDISABLE" or this.element = "NOSAVEOK" Or THIS.element = "REDIRECTTO" NEW.HDR<1,-1> = "<":THIS.ELEMENT:">" NEW.DETAILS<1,-1> = THIS.DETAIL Case 1 * these are OK NEW.HDR<1,-1> = this.element NEW.DETAILS<1,-1> = this.detail End case Next EACH.HDR formInfo = NEW.HDR formInfo = NEW.DETAILS Gosub doSaveDefaults End return doSaveDefaults: * property defaults must already be set; just make sure To save them Write formInfo On o4wtempfile%, uniqueID:"_PAGE_":pageNo@ If pageNo@ = headerInfo Then formInfo_ORIG = formInfo end return