From: <os...@us...> - 2013-02-05 18:05:43
|
Revision: 8939 http://sourceforge.net/p/oorexx/code-0/8939 Author: osims Date: 2013-02-05 18:05:40 +0000 (Tue, 05 Feb 2013) Log Message: ----------- Simplified PersonModel. Updated MessageSender with new function - changed edit fields for Target and Method to comboboxes, populated them with commonly-used component names and methods, and enabled the user to add new ones (although they're not saved over a dialog close). Modified Paths: -------------- ooDialog/trunk/examples/userGuide/exercises/Samples/Person/PersonModelData.rex ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.h ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rc ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rex Modified: ooDialog/trunk/examples/userGuide/exercises/Samples/Person/PersonModelData.rex =================================================================== --- ooDialog/trunk/examples/userGuide/exercises/Samples/Person/PersonModelData.rex 2013-02-04 03:30:57 UTC (rev 8938) +++ ooDialog/trunk/examples/userGuide/exercises/Samples/Person/PersonModelData.rex 2013-02-05 18:05:40 UTC (rev 8939) @@ -48,6 +48,7 @@ Changes: v01-00 01Oct12: First version. 09Jan13: Removed or commented-out 'say' instructions. + 05Feb13: Removed 'query' method since it's available in the superclass. ------------------------------------------------------------------------------*/ @@ -92,64 +93,22 @@ -- that data when it creates this instance with -- '~new'. -- The data is in a directory: - --say "PersonModel-init-01: personNumber =" dirPerson["number"] - --return self + + self~myData = dirPerson -- Store the data in my superclass. + /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /*---------------------------------------------------------------------------- - query - returns Person data. - Standard protocol: - Accept a .nil, directory, array, or string of names. - if .nil then return all; else return values for the names in - the directory, array, or string. String is assumed to be data - names separated by one or more spaces. - All returns are a Directory containing names and values. - - NOTE: This should be implemented by the Model superclass - so this method - will be removed later! + test - a method to demonstrate Message Sender method store. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - ::METHOD query PUBLIC - expose dirPerson - use arg dataNames - --say "PersonModelData-query-01: familyName =" dirPerson["familyName"] - --say "PersonModel-query-02: dataNames:" dataNames - dirReturn = .Directory~new - select - when dataNames = .nil | dataNames = "" then return dirPerson - when dataNames = "DATANAMES" then return dirPerson + ::METHOD test + return 25 - when dataNames~isa(.Directory) then do - do i over dataNames - dirReturn[i] = dirPerson[i] - end - end + /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - when dataNames~isa(.Array) then do - do i over dataNames - --say "PersonModel-query-03: dataNames: '"||dataNames"'" - dirReturn[i] = dirPerson[i] - end - end - -- dataNames must be separated by a *single* space. - when dataNames~isa(.String) then do - dataNames = dataNames~strip - --say "PersonModel-query-04: dataNames: '"||dataNames"'" - n = dataNames~countStr(" ")+1 - do i = 1 to n - parse var dataNames name " " dataNames - if name = " " then iterate -- ignore extraneous leading spaces. - --say "PersonModel-query-05: name: '"name"'" - dirReturn[name] = dirPerson[name] - end - end - otherwise return .false - end - - return dirReturn - /*============================================================================*/ @@ -178,8 +137,7 @@ end - ::METHOD init PUBLIC - expose fileName records instanceName + ::METHOD init PRIVATE fileName = "..\samples\person\PersonFile.txt" columns = 6 -- colums in the Persons "table" records = self~init:super(fileName, columns) @@ -187,6 +145,10 @@ return self -- MVF +/*============================================================================*/ + + + /*////////////////////////////////////////////////////////////////////////////// ============================================================================== PersonDT - A business data type for Person data. v00-01 05May12 Modified: ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.h =================================================================== --- ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.h 2013-02-04 03:30:57 UTC (rev 8938) +++ ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.h 2013-02-05 18:05:40 UTC (rev 8939) @@ -1,49 +1,14 @@ -/*----------------------------------------------------------------------------*/ -/* */ -/* Copyright (c) 2012-2013 Rexx Language Association. All rights reserved. */ -/* */ -/* This program and the accompanying materials are made available under */ -/* the terms of the Common Public License v1.0 which accompanies this */ -/* distribution. A copy is also available at the following address: */ -/* http://www.oorexx.org/license.html */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the following */ -/* conditions are met: */ -/* */ -/* Redistributions of source code must retain the above copyright */ -/* notice, this list of conditions and the following disclaimer. */ -/* Redistributions in binary form must reproduce the above copyright */ -/* notice, this list of conditions and the following disclaimer in */ -/* the documentation and/or other materials provided with the distribution. */ -/* */ -/* Neither the name of Rexx Language Association nor the names */ -/* of its contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ -/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ -/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ -/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ -/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ -/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ -/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ -/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ -/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ -/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* */ -/*----------------------------------------------------------------------------*/ - #ifndef IDC_STATIC #define IDC_STATIC (-1) #endif #define DLG_MESSAGESENDER 103 #define IDC_MS_ERRORMSG 1000 -#define IDC_MS_METHOD 1001 #define IDC_MS_CLEAR 1002 -#define IDC_MS_COMPONENT 1008 #define IDC_MS_DATA 1010 #define IDC_MS_REPLY 1011 #define IDC_MS_SEND 1012 +#define IDC_MS_COMPONENT 1015 +#define IDC_MS_METHOD 1016 +#define IDC_MS_STORETARGET 1018 +#define IDC_MS_STOREMETHOD 1020 Modified: ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rc =================================================================== --- ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rc 2013-02-04 03:30:57 UTC (rev 8938) +++ ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rc 2013-02-05 18:05:40 UTC (rev 8939) @@ -1,39 +1,6 @@ -/*----------------------------------------------------------------------------*/ -/* */ -/* Copyright (c) 2012-2013 Rexx Language Association. All rights reserved. */ -/* */ -/* This program and the accompanying materials are made available under */ -/* the terms of the Common Public License v1.0 which accompanies this */ -/* distribution. A copy is also available at the following address: */ -/* http://www.oorexx.org/license.html */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the following */ -/* conditions are met: */ -/* */ -/* Redistributions of source code must retain the above copyright */ -/* notice, this list of conditions and the following disclaimer. */ -/* Redistributions in binary form must reproduce the above copyright */ -/* notice, this list of conditions and the following disclaimer in */ -/* the documentation and/or other materials provided with the distribution. */ -/* */ -/* Neither the name of Rexx Language Association nor the names */ -/* of its contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ -/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ -/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ -/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ -/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ -/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ -/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ -/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ -/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ -/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* */ -/*----------------------------------------------------------------------------*/ +// Generated by ResEdit 1.5.11 +// Copyright (C) 2006-2012 +// http://www.resedit.net #include <windows.h> #include <commctrl.h> @@ -47,20 +14,22 @@ // Dialog resources // LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -DLG_MESSAGESENDER DIALOG 0, 0, 248, 156 +DLG_MESSAGESENDER DIALOG 0, 0, 262, 156 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_GROUP | WS_POPUP | WS_SYSMENU CAPTION "Message Sender" FONT 8, "Ms Shell Dlg" { - LTEXT "Target:", IDC_STATIC, 8, 12, 24, 8, SS_LEFT - LTEXT "Method:", IDC_STATIC, 8, 33, 27, 8, SS_LEFT - EDITTEXT IDC_MS_COMPONENT, 40, 10, 145, 15, ES_AUTOHSCROLL - EDITTEXT IDC_MS_METHOD, 40, 30, 115, 15, ES_AUTOHSCROLL - LTEXT "Data:", IDC_STATIC, 9, 55, 18, 8, SS_LEFT - EDITTEXT IDC_MS_DATA, 40, 52, 185, 35, WS_VSCROLL | ES_MULTILINE - LTEXT "Reply:", IDC_STATIC, 10, 96, 21, 8, SS_LEFT - EDITTEXT IDC_MS_REPLY, 40, 96, 185, 35, WS_HSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE - DEFPUSHBUTTON "Send", IDC_MS_SEND, 200, 10, 40, 14 - PUSHBUTTON "Clear", IDC_MS_CLEAR, 200, 30, 40, 14, WS_DISABLED - LTEXT "", IDC_MS_ERRORMSG, 13, 137, 225, 10, SS_LEFT + LTEXT "Target:", IDC_STATIC, 8, 17, 24, 8, SS_LEFT + LTEXT "Method:", IDC_STATIC, 8, 38, 27, 8, SS_LEFT + LTEXT "Data:", IDC_STATIC, 9, 60, 18, 8, SS_LEFT + EDITTEXT IDC_MS_DATA, 40, 55, 210, 35, WS_VSCROLL | ES_MULTILINE + LTEXT "Reply:", IDC_STATIC, 10, 101, 21, 8, SS_LEFT + EDITTEXT IDC_MS_REPLY, 40, 101, 210, 35, WS_HSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE + DEFPUSHBUTTON "Send", IDC_MS_SEND, 211, 15, 40, 14 + PUSHBUTTON "Clear", IDC_MS_CLEAR, 211, 35, 40, 14, WS_DISABLED + LTEXT "", IDC_MS_ERRORMSG, 13, 142, 225, 10, SS_LEFT + COMBOBOX IDC_MS_COMPONENT, 40, 15, 125, 15, WS_TABSTOP | CBS_DROPDOWN | CBS_HASSTRINGS | CBS_SORT + COMBOBOX IDC_MS_METHOD, 40, 35, 115, 30, WS_TABSTOP | CBS_DROPDOWN | CBS_HASSTRINGS | CBS_SORT + AUTOCHECKBOX "Store", IDC_MS_STORETARGET, 172, 17, 33, 8 + AUTOCHECKBOX "Store", IDC_MS_STOREMETHOD, 163, 36, 33, 9 } Modified: ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rex =================================================================== --- ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rex 2013-02-04 03:30:57 UTC (rev 8938) +++ ooDialog/trunk/examples/userGuide/exercises/Support/MessageSender.rex 2013-02-05 18:05:40 UTC (rev 8939) @@ -57,6 +57,9 @@ 07Aug12: Changed self~execute() to popupAsChild. Launched via a menu item in the Order Management dialog (OrderMgr.rex) 14Jan13: Commented-out use of ViewMgr (ViewMgr function incomplete) + 05Feb13: Changed edit controls to comboboxes for Target and Method. + Provided for user add of methods and target components + (not saved over a dialog close). Description: Target: className instanceName @@ -117,15 +120,18 @@ initDialog - initialises the MessageSender - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ ::METHOD initDialog - expose ecTarget ecMethod ecData ecReply btnSend btnClear stErrorMsg objectMgr + expose cbTarget cbMethod ecData ecReply btnSend btnClear stErrorMsg objectMgr - + chkStoreTarget chkStoreMethod arrTargets arrMethods --say "MessageSender-initDialog-01." - ecTarget = self~newEdit("IDC_MS_COMPONENT") - ecMethod = self~newEdit("IDC_MS_METHOD") + cbTarget = self~newComboBox("IDC_MS_COMPONENT") + cbMethod = self~newComboBox("IDC_MS_METHOD") ecData = self~newEdit("IDC_MS_DATA") ecReply = self~newEdit("IDC_MS_REPLY") stErrorMsg = self~newStatic("IDC_MS_ERRORMSG") btnSend = self~newPushButton("IDC_MS_SEND") btnClear = self~newPushButton("IDC_MS_CLEAR") + chkStoreTarget = self~newCheckBox("IDC_MS_STORETARGET") + chkStoreMethod = self~newCheckBox("IDC_MS_STOREMETHOD") self~connectButtonEvent("IDC_MS_SEND","CLICKED",sendMessage) self~connectButtonEvent("IDC_MS_CLEAR","CLICKED",clearEntries) self~connectHelp(onHelp) @@ -141,7 +147,19 @@ stErrorMsg~setText(.HRSms~prefix1||.HRSms~noObjectMgr) btnSend~disable() end + + arrTargets = .array~of("ObjectMgr The","PersonModel PA150") + arrMethods = .array~of("showModel","query","list") + do i over arrTargets + cbTarget~add(i) + end + do i over arrMethods + cbMethod~add(i) + end + return + + /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /*---------------------------------------------------------------------------- @@ -157,25 +175,30 @@ resulting from errors in the data provided by the user. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ ::METHOD sendMessage - expose objectMgr ecReply stErrorMsg btnClear + expose objectMgr ecReply stErrorMsg btnClear chkStoreTarget chkStoreMethod - + cbTarget cbMethod arrTargets arrMethods --say; say "---------------------------------------------------------" --say "MessageSender-sendMessage-01." ecReply~setText("") -- Clear any reply data from previous requests. --error = .false -- if true, indicates error in data provided. message = self~parseData -- data is a directory, array, string; .false if error. + if message = .false then do -- if errors found in the data. --say "MessageSender-sendMessage-02: message =" message btnClear~enable() -- allow user to clear entries. + chkStoreTarget~uncheck; chkStoreMethod~uncheck return .false end - if message = "special" then do + if message = "special" then do -- message to ObjectMgr has been dealt with. btnClear~enable + chkStoreTarget~uncheck; chkStoreMethod~uncheck return .true end -- Get the component ID (object ref) from the Object Manager: componentRef = objectMgr~getComponentId(message["class"], message["instance"]) if componentRef = .false then do + chkStoreTarget~uncheck; chkStoreMethod~uncheck ecReply~setText(.HRSms~rc||" "||componentRef) stErrorMsg~setText(.HRSms~prefix1||" "||.HRSms~noObject) btnClear~enable @@ -187,19 +210,23 @@ response = sendMsg(componentRef, message["method"],message["data"]) select when response = "SendMsg - Syntax Error" then do + chkStoreTarget~uncheck; chkStoreMethod~uncheck stErrorMsg~setText(.HRSms~noResponse) btnClear~enable return end when response = "SendMsg - No Method" then do + chkStoreTarget~uncheck; chkStoreMethod~uncheck stErrorMsg~setText(.HRSms~noTgtMethod) btnClear~enable return end when response = .false then do + chkStoreTarget~uncheck; chkStoreMethod~uncheck ecReply~setText(.HRSms~rc||" "||response) return end + when response~isa(.String) then do ecReply~setText(response) end @@ -216,17 +243,58 @@ end btnClear~enable -- say "MessageSender-sendMessage-04: response =" response + + -- Message sent successfully - so now action the checkboxes: + -- If either 'store' checkbox is checked, then add target and/or method to list in combobox: + self~storeEntry(cbTarget, chkStoreTarget) + self~storeEntry(cbMethod, chkStoreMethod) + return /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + /*---------------------------------------------------------------------------- + storeEntry - Store a new item in either Target or Method comboboxes. + Assumes that a checkbox has been checked (sop caller has to check). + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + ::METHOD storeEntry PRIVATE + use strict arg comboBox, checkBox + say "MessageSender-storeEntry-01." + if checkBox~getCheckState = "CHECKED" then do + newItem = comboBox~getEditControl()~getLine(1) + ix = comboBox~find(newitem) -- case-insensitive find + if ix = 0 then do -- if item not found, then add it. + comboBox~add(newItem) + end + checkBox~uncheck() + end + return +/* + newItemUC = newItem~upper + found = .false + do i over arrEntries -- Check if item is already stored + if newItemUC = i~upper then do + found = .true + say "MessageSender-storeEntry-02: found = true." + leave -- no need to add - it's already there. + end + end + if found then return -- Already in the array, so don't add. + say "MessageSender-storeEntry-03: New Entry =" newItem + comboBox~add(newItem) + checkBox~uncheck() + return */ + /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + + + /*---------------------------------------------------------------------------- clearEntries - Clear user entries and error messages. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ ::METHOD clearEntries - expose ecTarget ecMethod ecData ecReply stErrorMsg btnClear - ecTarget~setText("") - ecMethod~setText("") + expose cbTarget cbMethod ecData ecReply stErrorMsg btnClear + cbTarget~setText("") + cbMethod~setText("") ecData~setText("") ecReply~setText("") stErrorMsg~setText("") @@ -241,11 +309,12 @@ cr = .endOfLine msg = .HRSms~help2||cr||.HRSms~help3||cr - ||.HRSms~help4||cr||.HRSms~help5||cr - - ||.HRSms~help6||cr||.HRSms~help7||cr - --||.HRSms~help8 + ||.HRSms~help6||cr||.HRSms~help7||cr - + ||.HRSms~help8 title = .HRSms~help1 buttons = "OK" - ans = MessageDialog(msg, 0, title, "OK", "INFORMATION") + --ans = MessageDialog(msg, 0, title, "OK", "INFORMATION") + ans = MessageDialog(msg, self~dlgHandle, title, "OK", "INFORMATION") /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ @@ -279,13 +348,15 @@ If format errors are found, a message is displayed, and .false is returned. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ ::METHOD parseData - expose ecTarget ecMethod ecData stErrorMsg objectMgr rootDlg + expose cbTarget cbMethod ecData stErrorMsg objectMgr rootDlg stErrorMsg~setText("") -- remove any previous error message. - --say; say "MessageSender-parseData-01." + say; say "MessageSender-parseData-01." message = .Directory~new -- get target component name: - target = ecTarget~getLine(0) + --target = cbTarget~getText(1) + target = cbTarget~getEditControl()~getLine(1) + say "MessageSender-parseData-02 target =" target parse var target class instance targetError = .false if class = "" | instance = "" then targetError = .true @@ -296,14 +367,15 @@ -- get Method/Message Name: targetMethodError = .false - targetMethod = ecMethod~getLine(0) + targetMethod = cbMethod~getEditControl()~getLine(1) + say "MessageSender-parseData-03 targetMethod =" targetMethod if targetMethod~words \= 1 then targetMethodError = .true else message["method"] = targetMethod~strip -- Special Treatments: if message["class"] = "ObjectMgr" & message["instance"] = "The" then do -- Only List and ShowModel allowed (at present). - --say "MessageSender-parseData-01a: msg to ObjectMgr." + --say "MessageSender-parseData-04: msg to ObjectMgr." method = message["method"] method = method~upper select @@ -315,24 +387,24 @@ modelName = ecData~getLine(1) parse var modelName modelClass " " modelInstance modelClass = modelClass~strip; modelInstance = modelInstance~strip - --say "MessageSender-parseData-01b: ViewMgr~parentOffsetDialog = self." + --say "MessageSender-parseData-05: ViewMgr~parentOffsetDialog = self." -- Setup self as "Parent" dialog for offsetting the view to be shown --(do it here because other components may have done it previously): .local~my.ViewMgr~parentOffsetDlg = self -- Now show the model: - --say "MessageSender-parseData-01bb: objectMgr~showModel." + --say "MessageSender-parseData-06: objectMgr~showModel." r = objectMgr~showModel(modelClass, modelInstance, rootDlg) - --say "MessageSender-parseData-01c: return =" r + --say "MessageSender-parseData-07: return =" r return "special" end otherwise do - --say "MessageSender-parseData-01d:" method "is invalid." + --say "MessageSender-parseData-08:" method "is invalid." targetMethodError = .true --return .false end end end --- Following Code does not work - left here in case needed in any follwoing exercises. +-- Following Code does not work - left here in case needed in any following exercises. /* else do --say "MessageSender-parseData-01d." if message["class"] = "ViewMgr" & message["instance"] = "The" then do @@ -486,13 +558,13 @@ ::CONSTANT noDir1 "Reply is a" ::CONSTANT noDir2 "- cannot display with this version." ::CONSTANT help1 "Formats for data parameters:" - ::CONSTANT help2 "Target: Class Instance - e.g. 'PersonModel PA150'" + ::CONSTANT help2 "Target: Class Instance - e.g. 'CustomerModel CU0003'" ::CONSTANT help3 "Method: method name - e.g. 'query'" ::CONSTANT help4 "Data: Formats for message data are:" ::CONSTANT help5 " Directory: '[aaa] [bbb] [c cc]'" ::CONSTANT help6 " Array: '|aaa|bbb|c cc'" ::CONSTANT help7 " String: 'aaa bbb'" - --::CONSTANT help8 " Note: string format does not allow spaces within a parameter." + ::CONSTANT help8 "Note: an added target or method is not saved over a close." ::CONSTANT helpMsg "Press F1 for help on allowable data formats." /*============================================================================*/ |