Surround Technologies, LLC

Surround Newsletter - Fall 2003

A newsletter from Surround Technologies, LLC

  IN THIS ISSUE

 

  Surround's Thanksgiving Special

Back to Top

Thanksgiving is a time for giving. That’s why Surround Technologies will be giving away one complimentary year of maintenance and support on all software sold now through November 28th. This includes our popular Universal FTP and VL Accelerator software. When requesting this offer, please ask us to “Trim the Turkey”!!

If you would like to try out the software before buying it, please take advantage of the 30-Day Software Trials. Go to the Surround Technologies website, http://www.surroundtech.com, for more details.

Envision Visual LANSA Accelerator

If you are currently using, or planning on using, Visual LANSA, you need to take a look at this solution. The Envision Visual LANSA Accelerator (VL Accelerator or EVLA) is a powerful system development tool that helps the development team rapidly design, implement, and maintain scalable and highly integrated systems with a consistent, standard, and feature-rich Windows User Interfaces. All with virtually no manual programming.

Here's what one VL Accelerator client had to say about this powerful tool: "I believe that we probably will realize savings of hundreds of thousands of dollars in programming thanks to Surround's VL Accelerator. What we can now do in about half a day versus weeks, it's like a 25 to 1 ratio of increased productivity." (Louis Vilardo, Today's Business Computers)

Go to http://www.surroundtech.com/evla for more information!

Can you do this in less than 1 Day?
With EVLA, in less than 8 hours one developer built a very robust, fully functional Windows interface over the LANSA Demonstration Personnel Database. Click here to check out a tour of what they built.

Envision Universal FTP

Do you use FTP? The Envision Universal FTP (UFTP) is a file transfer automation utility. It is designed to automate the distribution and management of files by using the File Transfer Protocol, FTP, over TCP/IP and by executing dynamic, flexible, pre-defined and proven scripts.

Go to http://www.surroundtech.com/uftp for more information!

  Product Tips and Techniques

Back to Top

Visual LANSA Accelerator: How to add Remarks and Freeform Notes

With the Envision VL Accelerator, EVLA, it is very easy to add Remarks or Freeform Notes throughout your system in less than 15 minutes and without writing a single line of code. Of course, now there is the question of how do you decide which one to use? Many systems actually use both. Freeform notes are typically used for single use purposes such as explanations or instructional comments. Remarks are typically used for chronological or date sensitive information. Remarks are basically organized, categorized, and structured freeform notes and The Remark Notes are freeform notes themselves. For more information, go to the EVLA Tour and look at the Remarks Application, Using Remarks, and Freeform notes.

Adding Remarks:

Adding Remarks to your system is very easy. It takes less than 15 minutes and requires ABSOLUTELY NO CODING. Simply perform the following steps.

Step 1: Add Remarks Application and Modules to your system.
Step 2: Add Remarks to your Detailers.
Step 3: Repeat Step 2 for each Detail you wish to provide Remarks on.

That's it!     And not one line of code was required!

More Detailed instructions on these steps can be found in the EVLA User Guide. Click here to download the latest version of the User Guide. Refer to Step 4.4 in the Developing A System section.
 

  Les Scwab and National Housing Trust choose VL Accelerator

Back to Top

Les Schwab Tire Centers

Surround Technologies welcomed Les Schwab Tire Centers as its newest member of the growing VL Accelerator community in September. Les Schwab, which has approximately 30 developers, will be using VL Accelerator for all future Visual LANSA development needs. First up…a revamp of the company’s legacy employee bonus system. Happy Coding!
 

National Housing Trust

In June, the National Housing Trust of Jamaica (NHT) decided to purchase VL Accelerator after realizing that their pending Visual LANSA project would have been extended approximately 4 months without using the VL Accelerator development system. This is a perfect example of how VL Accelerator can drastically cut project development time and expenses. NHT worked with ICS2000 Ltd, a VL Accelerator reseller and solutions partner in Kingston, Jamaica, for installation, training, and ongoing consulting services. Way to go ICS2000!
 

  Latest Product Releases

Back to Top

Envision Visual LANSA Accelerator - Version 5.4 is now available with many new features. Click here to check out what's new in the latest release.

 

  Development Tips and Techniques

Back to Top

Visual LANSA: Using PASS(*By_Reference) to expose embedded components.

It is often important for a component to access the properties, methods, and events of its child's child or owned component. This allows the Parent component to control, set, and handle specific features of the child's child component. For Example, Component A is a parent of component B. Component B is a parent of component C (A to B to C). Component A must be able to work with and communicate with Component C (A to C).

This can be accomplished in 3 ways:

  1. Inheriting - Component B can inherit From Component C, hence inheriting all of it properties, methods, and events.
  2. Defining - Define properties, methods, and events in Component B that provide access to the specific features of the component C.
  3. Referencing - Define a single property in Component B that can be used to pass the reference, using the PASS(*BY_REFERENCE) to component C.

Inheriting is the best method if the the functionality that must be provided in Component B fits with in the confines of the Component C structure. However, that is often not the case and inheriting is not an option.

Defining is the obvious and most common method. However, it can take a fair amount of development work on Component B to define all the necessary properties, methods , and events to process the necessary properties, methods, and events of Component C. Ongoing maintenance can be a burden as well. If any functionality is left out or added to Component C, then changes will be required to Component B to handle it.

Referencing is the easy, fast, and most efficient method. By referencing, the entire component is exposed complete with all of its properties, methods, and events. Referencing is a common coding practice. If you have worked with Active-X controls like the MS WORD Active-X or if you dynamically create and destroy components, you have probably already used referencing. This is simply another area where it can be used further.

SB_NOTE01 and SB_NOTE02

To provide a further example, refer Components SB_NOTE01 and SB_NOTE02. These 2 components can be used to include freeform notes or comments on other components. They provide virtually the same functionality, however they do it different ways.

The MEMO_NOTE component is a Memo Box, PRIM_MEMO, class component that is defined in the SB_NOTE01 and SB_NOTE02 Components. The SB_NOTE01 and SB_NOTE02 Components are used on parent forms to display freeform notes. They both provide the same specialized methods to handle the data written to and read from the MEMO_NOTE component. Parent forms perform the File I/O and pass the information to the SB_NOTE01 and SB_NOT02 Components through those Methods.

The Parent components provide graphical interfaces to the Notes such as Toolbar buttons, and Menu bar items to Cut, Copy, and Paste notes, to turn Word Wrap on or off, to show line numbers, to save changes, etc.. Therefore, the parent component needs access to this functionality within the NOTE_MEMO component. Word Wrap and showing Line numbers are Properties. Cut, copy, and paste are methods. The changed event tells the Parent component that changes have been made and the Save button should be enabled.

The SB_NOTE01 component was written before referencing was available in Visual LANSA and so it had its own Properties, Methods, and Events to provide control to the MEMO_NOTE component. These definitions are shown in the following code segment.

* Notes Memo Box Definition

DEFINE_COM CLASS(#PRIM_MEMO) NAME(#MEMO_NOTE) ...

 

* =======================================================

* Notes memo box control property definitions

* =======================================================

DEFINE_PTY NAME(uWordWrap) GET(GetuWordWrap) SET(SetuWordWrap)

DEFINE_PTY NAME(uShowLineNumbers) GET(GetuShowLineNumbers) SET(SetuShowLineNumbers)

DEFINE_PTY NAME(uShowHint) GET(GetuHintShow) SET(SetuHintShow)

DEFINE_PTY NAME(uHint) GET(GetuHint) SET(SetuHint)

DEFINE_PTY NAME(uLineCount) GET(GetuLineCount)

DEFINE_PTY NAME(uEntries) GET(GetuEntries)

 

* =======================================================

* Notes memo box control event definitions

* =======================================================

DEFINE_EVT NAME(uChanged) DESC('Notes have changed') HELP('Notes have Changed')

DEFINE_EVT NAME(uGotFocus) DESC('Notes Got Focus') HELP('The Notes have received focus')

DEFINE_EVT NAME(uLostFocus) DESC('Notes Lost Focus') HELP('The Notes have Lost focus')

 

* =======================================================

* Notes memo box control method definitions

* =======================================================

MTHROUTINE NAME(uUndo) DESC('Undo the last action') HELP('The Undo method reverses the last action in the multi-line edit box. ')

INVOKE METHOD(#MEMO_NOTE.Undo)

ENDROUTINE

 

MTHROUTINE NAME(uCut) DESC('Cut Selected Notes') HELP('The Cut method deletes selected text and puts it in the clipboard.')

INVOKE METHOD(#MEMO_NOTE.Cut)

ENDROUTINE

 

MTHROUTINE NAME(uCopy) DESC('Copy Seleceted Notes') HELP('The Copy method copies selected text to the clipboard.')

INVOKE METHOD(#MEMO_NOTE.Copy)

ENDROUTINE

 

MTHROUTINE NAME(uPaste) DESC('Paste Notes') HELP('The Paste method pastes the contents of the clipboard to the multi-line edit box.')

INVOKE METHOD(#MEMO_NOTE.Paste)

ENDROUTINE

 

MTHROUTINE NAME(uFind) DESC('Find text in the Edit Box') HELP('The Find method brings up a dialog box which can be used to locate a string in the multi-line edit box. .')

INVOKE METHOD(#MEMO_NOTE.Find)

ENDROUTINE

 

MTHROUTINE NAME(uRedo) DESC('Redo last action') HELP('The Redo method reapplies an action performed in the multi-line edit box which had been reversed using the Undo method.')

INVOKE METHOD(#MEMO_NOTE.Redo)

ENDROUTINE

 

MTHROUTINE NAME(uReplace) DESC('Replace Dialog box') HELP('The Replace method brings up a dialog box which can be used to locate a string in the multi-line edit box and to replace it with another.')

INVOKE METHOD(#MEMO_NOTE.Replace)

ENDROUTINE

 

MTHROUTINE NAME(uSelectAll) DESC('Select all the Notes') HELP('The Select All method selects all text in the multi-line edit box. ')

INVOKE METHOD(#MEMO_NOTE.SelectAll)

ENDROUTINE

 

MTHROUTINE NAME(uSetFocus) DESC('Set Focus to the Notes box') HELP('Use the SetFocus method to set the focus on a component programmatically. The user sets the focus using the mouse or the keyboard.')

INVOKE METHOD(#MEMO_NOTE.SetFocus)

ENDROUTINE

 

* =======================================================

* Notes memo box control event definitions

* =======================================================

EVTROUTINE HANDLING(#MEMO_NOTE.Changed) OPTIONS(*NOCLEARMESSAGES *NOCLEARERRORS)

SIGNAL EVENT(uChanged)

ENDROUTINE

 

EVTROUTINE HANDLING(#MEMO_NOTE.GotFocus) OPTIONS(*NOCLEARMESSAGES *NOCLEARERRORS)

SIGNAL EVENT(uGotFocus)

ENDROUTINE

 

EVTROUTINE HANDLING(#MEMO_NOTE.LostFocus) OPTIONS(*NOCLEARMESSAGES *NOCLEARERRORS)

SIGNAL EVENT(uLostFocus)

ENDROUTINE

The SB_NOTE02 provides a direct reference to the Memo Box component, PRIM_MEMO, through its uNotes Property. This exposes all the Properties, Methods, and Events for the PRIM_MEMO component to components that use SB_NOTE02. See the following code.

* Notes Memo Box Definition

DEFINE_COM CLASS(#PRIM_MEMO) NAME(#MEMO_NOTE) ...

 

* Notes Memo Box Property

DEFINE_PTY NAME(uNotes) DESC('Notes') GET(GetuNotes) HELP('Notes')

 

* Note Memo Box Get Property Routine to Pass the Reference to the Notes Memo Box Definition

PTYROUTINE NAME(GetuNotes)

   DEFINE_MAP FOR(*output) CLASS(#PRIM_MEMO) NAME(#NotesRef) PASS(*By_Reference)

   SET_REF COM(#NotesRef) TO(#MEMO_NOTE)

ENDROUTINE

This allows the components to work as shown in this image.

To control the MEMO_NOTE Component, the parent form would have SB_NOTE01 or SB_NOTE02 defined within it.  For SB_NOTE01, control would be handled similar to the following:

* Set SB_NOTE01 Properties

SET COM(#SB_NOTE01) uWordWrap(True)

 

* Invoke SB_NOTE01 Methods

INVOKE METHOD(#SB_NOTE01.uSelectAll)

 

* Handle SB_NOTE01 Events

EVTROUTINE HANDLING(#SB_NOTE01.uChanged)

...

ENDROUTINE

For SB_NOTE02, control would be handled similar to the following:

* Set SB_NOTE02.uNotes Properties

SET COM(#SB_NOTE02.uNotes) WordWrap(True)

 

* Invoke SB_NOTE02.uNotes Methods

INVOKE METHOD(#SB_NOTE02.uNotes.SelectAll)

 

* Handle SB_NOTE02.uNotes Events

EVTROUTINE HANDLING(#SB_NOTE02.uNotes.Changed)

...

ENDROUTINE

You can see how much easier it is to pass a reference and control the Component directly. Many of the Properties, Methods, and Events that are defined in the SB_NOTE01 are no longer needed in SB_NOTE02 as they are provided directly through the uNotes property. Additionally, any new functionality that is introduced to the MEMO Box Component by LANSA will be available in the SB_NOTE02 automatically.
 

  Help Surround to Help You! Sign up for a Case Study

Back to Top

Surround Technologies is currently writing customer success stories / case studies for its clients that are using the Envision Visual LANSA Accelerator product.  Case studies help to get the word out about the product and the solution that you have created at your company, thus being a win-win for everyone. 

If you would like to have a case study written about your success with the Envision Visual LANSA Accelerator product, Envision Universal FTP product, or any other Surround Technologies product, please contact Lee Paul at Surround Technologies.
 

  Company Information

Back to Top

Established in 1997, Surround Technologies, LLC is an information technology firm dedicated to providing efficient and cost-effective solutions to the corporate community by delivering high-quality software applications and consulting services.

For further information on anything that you have read in this issue of the Surround Newsletter, contact Surround Technologies at (908) 490-1235, or research their products and services on the World Wide Web at www.surroundtech.com.

Surround Technologies, LLC
324 Belleville Ave, Suite 31
Bloomfield, NJ 07003
Phone: 973-743-1277

Email: sales@surroundtech.com
Web: http://www.surroundtech.com

  eNewsletter Subscription Maintenance:

Back to Top

If you wish to Sign up or discontinue the receipt of Surround Newsletters, please use our Newsletter Request Form or send an email to surround_info@surroundtech.com

Surround Technologies, LLC