Home
Contact ASG
Shopping Cart

ASG Freeware (One Item)


Tip of the Day

Deciding between 4dx or Plugins folder
read more...

Frequently Asked Questions


" end if %> " end if %> " end if %> " end if %> " end if %> " end if %> " end if %> " end if %> " end if %>
<% response.write "
General Information
Are the deployment license fees per copy of an application or per application? (For example, I have an application that will be distributed as a merged application using 4D Engine. Do I purchase 1 deployment license or do I have to buy a license for each copy of the merged application?)
Runtime (or single-user apps) license fees are sold PER APPLICATION and PER INSTALLATION. Deployment (or client/server apps) are sold PER SERVER.
 
 
<% response.write "
General Information
I am developing a database for a client on Macintosh, but we are deploying on Windows - which licenses for which platforms do I need to buy?
You will need to purchase a Macintosh Developer license and a Windows deployment license.
 
 
<% response.write "
General Information
Do the prices on the web site for development and deployment licenses apply to systems developed for internal use?
Yes, to deploy a database in-house, you need to purchase a developer license for the platform you are developing in, as well as a deployment or runtime license for each platform on which the database will be deployed.
 
 
<% response.write "
General Information
If the application runs on server do I have to buy a deployment license for each server that runs the identical application?
Yes, you need one deployment license PER SERVER.
 
 
<% response.write "
AreaList Pro
How can I get ALP to display rows using Anti Aliased text?
If you are using 4D 2003 or 2004, you will need to disable 6.8 Compatability (Interface | Look).

 
 
<% response.write "
MenuPack
Integrating MenuPack into Foundation based applications
     
   
     
  All Foundation custom menus should be created using the Fnd_aa_Menu_UpdateMenuBar routine (requires Foundation 4.0.5 or greater). This method is called intrisically by Foundation's menu management system.
   

 ` ----------------------------------------------------
  ` Project Method: Fnd_aa_Menu_UpdateMenuBar

  ` This method is called each time Foundation updates the menu bar.

  ` Method Type: Public

  ` Parameters: None

  ` Returns: Nothing
  ` ----------------------------------------------------

C_TEXT($subMenuItemLabels_t)

  ` Turn the Administration menu into a hierarchical menu.
  ` We're using the same values we defined in the Fnd_aa_Shell_Administration method.
PS_AdminSubMenuID_i:=220  `define the default menuID
Error:=MP_DeleteMenu (PS_AdminSubMenuID_i)  `delete any existing menuID
$subMenuItemLabels_t:=Fnd_Loc_GetString ("Loc_General";"EditCompanyInfo")+";"+Fnd_Loc_GetString ("Fnd_Shell";"PasswordEditor")+";"+Fnd_Loc_GetString ("Fnd_Shell";"ListEditor")+";"+Fnd_Loc_GetString ("Fnd_Shell";"SequenceNumberEditor")+";"+Fnd_Loc_GetString ("Fnd_Shell";"ImportEditor")+";"+Fnd_Loc_GetString ("Fnd_Shell";"ExportEditor")
Error:=MP_TextMenu (1;3;"";$subMenuItemLabels_t;0;PS_AdminSubMenuID_i)  `create custom menu
MP_DrawMBar

  ` Turn the Print menu into a hierarchical menu.
  ` We're using the same values we defined in the Fnd_aa_Shell_Print method.
PS_PrintSubMenuID_i:=221  `define the default menuID
Error:=MP_DeleteMenu (PS_PrintSubMenuID_i)  `delete any existing menuID
$subMenuItemLabels_t:=Fnd_Loc_GetString ("Fnd_Shell";"ReportEditor")+";"+Fnd_Loc_GetString ("Fnd_Shell";"LabelEditor")
Error:=MP_TextMenu (1;5;"";$subMenuItemLabels_t;0;PS_PrintSubMenuID_i)  `create custom menu
MP_DrawMBar

     
 

When a table is opened, you menus will appear similar to the following.

     
   
     
 

The next step will be to create the menu handler method. This method will be called by your input and output form methods and will be called anytime a menu item is selected.

Create a new method: SP_HandleSubMenus

     
      `PM: SP_HandleSubMenus
  `LM: 01/05/05, mse - asg

  `Developer hook for menu handling

C_LONGINT($menuID_i;$itemID_i;PS_AdminSubMenuID_i;PS_PrintSubMenuID_i)
C_TEXT($menuLabel_t)

$menuID_i:=Menu selected\65536
$itemID_i:=Menu selected%65536

Case of
: ($menuID_i=PS_AdminSubMenuID_i)
   $menuLabel_t:=MP_GetMenuItem ($menuID_i;$itemID_i)
   Case of
   : ($menuLabel_t=Fnd_Loc_GetString ("Loc_General";"EditCompanyInfo"))
     Company_EditSettings
   : ($menuLabel_t=Fnd_Loc_GetString ("Fnd_Shell";"PasswordEditor"))
     EDIT ACCESS
   : ($menuLabel_t=Fnd_Loc_GetString ("Fnd_Shell";"ListEditor"))
     Fnd_List_Editor
   : ($menuLabel_t=Fnd_Loc_GetString ("Fnd_Shell";"SequenceNumberEditor"))
     Fnd_SqNo_Editor
   : ($menuLabel_t=Fnd_Loc_GetString ("Fnd_Shell";"ImportEditor"))
     IMPORT DATA("")
   : ($menuLabel_t=Fnd_Loc_GetString ("Fnd_Shell";"ExportEditor"))
     EXPORT DATA("")
   End case

   : ($menuID_i=PS_PrintSubMenuID_i)
   $menuLabel_t:=MP_GetMenuItem ($menuID_i;$itemID_i)
   Case of
   : ($menuLabel_t=Fnd_Loc_GetString ("Fnd_Shell";"ReportEditor"))
     Fnd_Prnt_QuickReportEditor
    : ($menuLabel_t=Fnd_Loc_GetString ("Fnd_Shell";"LabelEditor"))
     Fnd_Prnt_LabelEditor
   End case
End case

     
 

After successfully creating the custom menus, you must add the appropriate menu handler code which responds to a user menu selection. Unlike 4D's built-in menus which have an associated 4D method (created using 4D Menu Editor), custom menus are triggered using the 4D ;Menu Selected; event.

The simplest method for handling menu selection is to create two custom 'wrapper' methods which will be added to each of the Input and Output form methods to handle menu selection.

Create two new methods: 'SP_OutputFormMethod' and 'SP_InputFormMethod'

     
   

Custom Output Wrapper Method: SP_OutputFormMethod

  `PM: SP_OutputFormMethod
  `LM: 01/05/05, mse - asg

  `Override method for Fnd_IO_OutputFormMethod

Case of
: (Form event=On Menu Selected )
      SP_HandleSubMenus
End case

Fnd_IO_OutputFormMethod

Custom Input Wrapper Method: SP_InputFormMethod

  `PM: SP_InputFormMethod
  `LM: 01/05/05, mse - asg

  `Override method for Fnd_IO_InputFormMethod

Case of
: (Form event=On Menu Selected )
      SP_HandleSubMenus
End case

Fnd_IO_InputFormMethod

     
 

The next step will be connecting the custom menu handler routines to your existing input and ouput forms. For each of the forms you wish to use the custom menus, replace calls to the existing input and output form methods with the new wrapper methods created in Step 3.

• Replace 'Fnd_IO_OutputFormMethod' with 'SP_OutputFormMethod'
• Replace 'Fnd_IO_InputFormMethod' with 'SP_InputFormMethod'

     
   

Example output form method ([Invoices].Output)

Case of
   : (Form event=On Load )
     SET FORMAT([Invoices]Total;◊Gen_MoneyFormat_t)  ` DB040829 - Added
     ORDER BY([Invoices];[Invoices]Invoice Number;>)  ` 4D030627 - Added

   : (Form event=On Display Detail )
     [Contacts]Last Name:=Invoices_GetContactInfo
End case

SP_OutputFormMethod `override call to Fnd_IO_OutputFormMethod

     
  The final step will be to restart your application and activate all the custom methods, etc. created. When an item is selected from your custom menus, the appropriate input / output wrapper methods will be called, which will then call your new menu handler method (SP_HandleSubMenus).
     
     
 
 
<% response.write "
MenuPack
How come my hiearchical menus are not appearing?
When you are using MenuPack to create hieararchical menus, you must make sure the submenuIDs are in the range of 128..512. The internal Menu Manager will not display menuIDs outside of this range when using hierarchical menus.
 
 
<% response.write "
PowerTools
What is required to use with Foundation
Each of the PowerTools 2006 components are 100% drop-in compatible with Foundation based applications. Simply install the components you wish to use into your Foundation application and they are automatically recognized and used to enhance your application!
 
 
<% response.write "
PowerTools
Configuration Issues
If you have installed PowerTools 3.6 or greater in a database which previously had one of the enclosed components installed, make sure you are not explicitly calling the compoents startup method (eg AL_STARTUP) as it is called by PT_STARTUP.
 
 

Shopping Cart (No Items)

Your cart is empty

 

Your Recent Downloads

When logged in, you can view your five most recent downloads.

Forgot your password?

Mailing List

New ASG Mailing Lists!

Join ASG Mailing List(s) to be notified of product updates, special offers, technical notes, etc.


Select Mailing List:


Enter E-Mail Address:


Note: If you have previously signed up for an ASG Mailing List, please take a moment to re-subscribe as we are using a new list server system.


Contact Automated Solutions Group with any issues