maintenance: title: SCH_FUNC_CUSTOM_MSGBOX;; mlmname: SCH_FUNC_CUSTOM_MSGBOX;; arden: version 2;; version: 4.00;; institution: St Clair Memorial Hospital;; author: Shawn Head;; specialist: ;; date: 2016-09-06;; validation: testing;; library: purpose: This MLM calls an Objects+ DLL (Custom_MsgBox.dll)which can dislay a custom SCM message box ;; explanation: Change history 09.06.2016 STH Created {Go-Live 10/4/2016} 10.6.2018 STH CSR#: 36715 & 35594 - Updated Objects+ to allow for resizing of window, positioning of font, added extra box for "relevant information" associated with alert, buttons resize based on font, center alert on the screen, removed the title bar/min,max,close buttons. {Go-Live 11/7/2018} ;; keywords: ;; knowledge: type: data-driven;; data: /* TO USE THIS MLM YOU CAN ADD THE CODE BELOW TO ANY OTHER MLM. THEN USING THE dlg_result YOU CAN LOOK AT WHICH BUTTON THE USER SELECTED //THIS CODE SHOULD BE PLACED TOWARDS THE TOP OF THE MLM IN THE USER EDIT SECTIONS Custom_Msg_Box := mlm {{{SINGLE-QUOTE}}}SCH_FUNC_CUSTOM_MSGBOX{{{SINGLE-QUOTE}}}; AlertWindowHeight := "250"; //This will be the hight of the window. Minimum is 250. AlertWindowWidth := "500"; //This will be the width of the window. Minimum is 480; MsgBoxButtons := (); MsgBoxButtons := ("THE BUTTONS WILL", "GROW IN SIZE","BASED","ON TEXT IN BUTTON"); //THESE LIST ITEMS WILL BE PASSSED TO THE THE MESSAGE BOX BUTTON LABEL/TEXT/CAPTION AS THE SELECTABLE BUTTON VALUE. YOU CAN HAVE UP TO 4 BUTTONS. MsgBoxContent := "This will populate the primary message window on the alert.\n\nThe windows is set to automatically wordwrap so if you have a really long sentance or message it will automatically word wrap for you.\n\n" || "There is no scoll bar so if your information spans further than the message box available it will get cut off and not be visual to the user." || "you must adjust the window size to accomidate the information you want to present to the user"; MB_VAlign := "CENTER"; //Options are TOP, BOTTOM, CENTER. This will vertically align the text in the primary message box. MB_HAlign := "CENTER"; //Options are LEFT, RIGHT, CENTER. This will horizontially align the message box textual content in the primary message box. AdditionalInfoBox := "This is an additional info box. There are times where there is supporting evidence related to the message box being show. Sometimes this could be orders, results, demographics, etc...." || "\n\nIn the event you want to use this additional window you can set the AdditionalInfoBox to have information and the window will be automatically sized to 35% of the window size" || "******you can pass empty string if you dont need this box"; ADINFO_VAlign := "CENTER"; //Options are TOP, BOTTOM, CENTER. This will vertically align the text in the additional info message box. ADINFO_HAlign := "CENTER"; //Options are LEFT, RIGHT, CENTER. This will horizontially align the message box textual content in the additional info message box. //THIS CODE CAN BE ENTERED INTO THE MLM WHERE YOU EXPECT THE MESSAGE BOX TO APPEAR. WHAT EVER THE LABEL/TEXT OF THE BUTTON IS CLICKED WILL BE RETURNED //TO THE dlb_result FOR YOU TO CODE YOU MLM BASED ON THE USERS SELECTION. dlg_result := call Custom_Msg_Box with (AlertWindowHeight,AlertWindowWidth,MsgBoxContent,MB_VAlign,MB_HAlign,MsgBoxButtons,AdditionalInfoBox,ADINFO_VAlign,ADINFO_HAlign); */ log_execution_info:=FALSE; (MSG_BOX_HEIGHT, MSG_BOX_WIDTH, MSG_BOX_CONTENT, MSG_BOX_V_ALIGN, MSG_BOX_H_ALIGN, MSG_BOX_BUTTON_LABELS, MSG_BOX_ADDITIONAL_INFO, MSG_BOX_ADDITIONAL_INFO_V_ALIGN, MSG_BOX_ADDITIONAL_INFO_H_ALIGN) := ARGUMENT; // (MESSAGE_BOX_DETAILED_MSG, MSG_BOX_LABEL , MSG_BOX_BUTTON_LABELS, MSG_BOX_HEIGHT, MSG_BOX_WIDTH, RTF_MSG_BOX_HEIGHT) := ARGUMENT; if (Called_By_Editor = true) then triggerme := false; listvalues := (); listvalues := ("THE BUTTONS WILL GROWN IN SIZE", "BASED","ON THE TEXT INCLUDED IN" ,"THE BUTTON"); //THESE LIST ITEMS WILL BE PASSSED TO THE THE MESSAGE BOX BUTTON LABEL/TEXT/CAPTION AS THE SELECTABLE BUTTON VALUE. YOU CAN HAVE UP TO 4 BUTTONS. MSG_BOX_CONTENT := "This will populate the primary message window on the alert.\n\nThe windows is set to automatically wordwrap so if you have a really long sentance or message it will automatically word wrap for you.\n\n" || "There is no scoll bar so if your information spans further than the message box available it will get cut off and not be visual to the user." || "you must adjust the window size to accomidate the information you want to present to the user"; MSG_BOX_V_ALIGN := "TOP"; //TOP, CENTER BOTTOM MSG_BOX_H_ALIGN := "LEFT"; //LEFT, RIGHT OR CENTER MSG_BOX_ADDITIONAL_INFO := "This is an additional info box. There are times where there is supporting evidence related to the message box being shown. Sometimes this could be orders, results, demographics, etc...." || "\n\nIn the event you want to use this additional window you can set the AdditionalInfoBox to have information and the window will be automatically sized to 35% of the window size" || "******you can pass empty string if you dont need this box"; MSG_BOX_ADDITIONAL_INFO_V_ALIGN := "TOP"; MSG_BOX_ADDITIONAL_INFO_H_ALIGN := "LEFT"; MSG_BOX_BUTTON_LABELS := "" || listvalues; //MINIMUM HEIGHT IS 250 -- try 500 height to make this sample look better MSG_BOX_HEIGHT := "250"; //MINIMUM WIDTH IS 480 -- try 1000 width to make this sample look better MSG_BOX_WIDTH := "480"; else triggerme := true; MSG_BOX_LABEL := "" || MSG_BOX_LABEL; MESSAGE_BOX_DETAILED_MSG := "" || MESSAGE_BOX_DETAILED_MSG; MSG_BOX_BUTTON_LABELS := "" || MSG_BOX_BUTTON_LABELS; MSG_BOX_HEIGHT := "" || MSG_BOX_HEIGHT; MSG_BOX_WIDTH := "" || MSG_BOX_WIDTH; MSG_BOX_CONTENT := "" || MSG_BOX_CONTENT; MSG_BOX_V_ALIGN := "" || MSG_BOX_V_ALIGN; //TOP, CENTER BOTTOM MSG_BOX_H_ALIGN := "" || MSG_BOX_H_ALIGN; //LEFT, RIGHT OR CENTER MSG_BOX_ADDITIONAL_INFO := "" || MSG_BOX_ADDITIONAL_INFO; MSG_BOX_ADDITIONAL_INFO_V_ALIGN := "" || MSG_BOX_ADDITIONAL_INFO_V_ALIGN; MSG_BOX_ADDITIONAL_INFO_H_ALIGN := "" || MSG_BOX_ADDITIONAL_INFO_H_ALIGN; endif; standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}}; include standard_libs; using "ObjectsPlusXA.SCM.Forms"; using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms"; using "Custom_MsgBox"; /* DLL Name */ using namespace "wpfMsgBox"; /* Do not understand purpose...DLL funcional even if this is misspelled */ /* Namespace.Form */ //test:= new net_object {{{SINGLE-QUOTE}}}wpfMsgBox_sth.MsgBox_Load{{{SINGLE-QUOTE}}} with (MSG_BOX_LABEL , MESSAGE_BOX_DETAILED_MSG , MSG_BOX_BUTTON_LABELS, MSG_BOX_HEIGHT, MSG_BOX_WIDTH,RTF_MSG_BOX_HEIGHT); test:= new net_object {{{SINGLE-QUOTE}}}wpfMsgBox.MsgBox_Load{{{SINGLE-QUOTE}}} with (MSG_BOX_HEIGHT, MSG_BOX_WIDTH, MSG_BOX_CONTENT, MSG_BOX_V_ALIGN, MSG_BOX_H_ALIGN, MSG_BOX_BUTTON_LABELS, MSG_BOX_ADDITIONAL_INFO, MSG_BOX_ADDITIONAL_INFO_V_ALIGN, MSG_BOX_ADDITIONAL_INFO_H_ALIGN); ;; evoke: /* Call MLM */ ;; logic: try oeUnsigned:=CALL test.ShowDialog; MsgBoxAnswer := test.MsgBoxSelected; endtry; catch exception ex debugFlag := true; messageText := messageText || "New General Order:\n" || ex.Message || "\n\n"; endcatch; if(messagetext is null) then conclude true; else conclude false; endif; /* if (triggerme = true) then oeUnsigned:=CALL test.ShowDialog; // oeUnsigned:=CALL test.Show; conclude true; else conclude false; endif; */ ;; action: return(MsgBoxAnswer);//all of the action is done by the call to the FFI ;; Urgency: 50;; end: