Function Win_Check_Req_Fields(WinID, TabControl) //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// // // 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 SRP Computer Solutions, Inc. // // Name : Win_Check_Req_Fields // // Description: Checks the Required fields of a window to make sure they have data entered. // // Notes: Currently, this only works with controls with TEXT properties and // non-Edittables. Follow the examples below to hook this on to other windows. // Also include the following line in the Window Case statement in the // Promoted_Write_Event (Pre section): // // EventFlow = Win_Check_Req_Fields(@Window) // // It will automatically try and pull the STA_ controls text information. If no // static control exists, then it will use the control name after re-formating it. // // Parameters: // WinID [in] -- The window being validated. If blank, @WINDOW will be used. // TabControl [in] -- The name of the Tab control that is associated with each window // page. Not applicable with single-page forms. // EventFlow [out] -- Event flow status variable. See EVENT_SETUP insert for more // information on how this works. // // History (Date, Initials, Notes) // 09/21/01 pcs Original programmer // 12/06/05 dmb Updated code to support the OLE Tab control. Minor code clean up. // 12/14/05 dmb Check IOOPTIONS<10> first before executing code. // //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// If Assigned(WinID) else WinID = @Window If Assigned(TabControl) else TabControl = ".OLE_TAB" ; // If no tab control is passed, this one will be assumed. $insert SRP_APP_INSERTS $insert SRP_EVENT_SETUP $insert MSG_EQUATES $insert OIWin_Comm_Init Declare Subroutine First_Caps Process = 1 Done = No$ // Only execute if required fields are checked during the WRITE event. IOOptions = Get_Property(@Window, "IOOPTIONS") If IOOptions<10> NE Yes$ then Done = Yes$ Loop If Process GT 2 then Done = Yes$ Until Done On Process GoSub Init_Vars, Process_Window Process += 1 Repeat If Assigned(EventFlow) else EventFlow = EVENT_CONTINUE$ Return EventFlow Init_Vars: TrueNames = "" ReqFields = "" CntrlSemantics = ControlSemantics@ ControlList = ControlList@ NumItems = Count(CntrlSemantics, @FM) + (CntrlSemantics NE "") For ItemLoop = 1 to NumItems If CntrlSemantics then CurControl = ControlList ReqFields<-1> = CurControl StartPos = Index(CurControl, ".", 1) STAName = CurControl STAName[(StartPos + 1), 3] = "STA" CurTrueText = Get_Property(STAName, "TEXT") If CurTrueText EQ "" then CurTrueText = CurControl[(StartPos + 5), 999] Swap "_" with " " in CurTrueText First_Caps("", CurTrueText, "", NewText) CurTrueText = NewText end TrueNames<-1> = CurTrueText end Next ItemLoop If ReqFields EQ "" then Done = Yes$ end return Process_Window: MissingField = "" CurFocus = "" NumReqFields = Count(ReqFields, @FM) + (ReqFields NE "") Count = 1 For ReqLoop = 1 to NumReqFields CurReq = ReqFields CurProp = Get_Property(CurReq, "DEFPROP") If CurProp GT "" then // Contains information. Continue. end else // Missing information. Flag for reminder. If CurFocus = "" then // Set Focus back into the first field. CurFocus = CurReq end CurTrue = TrueNames MissingField<-1> = Count:".)":Tab$:CurTrue Count += 1 EventFlow = EVENT_STOP$ end Next ReqLoop If MissingField then // Required fields are blank. Display error message. Swap @FM with "|" in MissingField MsgBody = "|Unable to save the record due to missing required information:||":MissingField:"|" Set_Property("SYSTEM", "FOCUS", CurFocus) If Get_Property(WinID:TabControl, "HANDLE") then // A tab control that manages pages for this window exists. Reset so the appropriate tab has focus. Page = Get_Property(WinID, "VPOSITION")<1> Set_Property(WinID:TabControl, "OLE.SelectedTab", Page) end MsgTitle = "Missing Required Fields" MsgStruct = "" MsgStruct = "H" Msg(WinID, MsgStruct, "OK", "", MsgTitle:@FM:MsgBody) end return