zObjects v12.35

zObjects is a library of 126 new APL+Win and .Net objects available to APL+Win developers.

zObjects includes a zObjects.sf APL+Win User Command File and a C# ActiveX DLL (LC.zObjects.dll).

zObjects has been entirely rewritten to not use the APL+Win ⎕cse system function.

zObjects is free.


zObjects requires:

  • a version of APL+Win at least equal to v19.0.01+
  • the .Net Framework v4.7.2+


Download the zObjects full product (free):

Download »

Versions History

Check the recent changes made to zObjects:

History »


Using zObjects for your APL+Win Windows application developments brings the following benefits:

  • use and reuse well tested objects that have been running in production environments for years
  • help solve many problems that arise in any APL+Win development
  • considerably speed up APL+Win application development
  • allows to build perfect user interfaces
  • allows to adopt an Object Oriented approach
  • allows to use inheritance and visual inheritance
  • gives access a lot of .Net features not otherwise available to APL+Win developers


  • 126 APL+Win and .Net Custom Objects
  • easy to learn (360 pages documentation full of sample code and examples)
  • all objects usable with ⎕wi similarly to standard APL+Win objects
  • can be mixed with existing APL applications
  • avoid any name conflict with your own APL functions
  • only 2 APL functions (zzInit and zObject) necessary to initialize and start running zObjects
  • uses alias object names to reduce typing and making easy to refer to instantiated objects
  • properties and methods documentation available through ⎕wi
  • cover objects for all standard APL+Win objects very significantly simplifying their use
  • lots of additional useful controls
    zEditNum, zEnums, zHLine, zInfo, zMessageBox, zRegistry, zSplitter, ...
  • allows positioning controls relative to previously positioned controls
  • allows to automatically center controls and maintain centering when the forms are resized
  • allows to automatically center multiple controls horizontally and/or vertically
  • all .Net controls support the wherelc positionning property
  • all .Net controls support the anchor resizing property
  • automatically resizes and/or repositions controls when the form is resized
  • automatically maintains margins all around the forms
  • automatically maintains constant equal gaps between controls
  • API for creating your own objects
  • supports Inheritance and even Visual Inheritance
  • use .Net controls with ⎕wi syntax
    Use the same hierarchical syntax as standard APL+Win controls
  • HTML Code Generator
    Programmatically generate/validate perfect HTML documents
  • .Net small and large buttons controls
    .Net buttons look & feel and display images in buttons
  • .Net CheckBox control
    .Net buttons look & feel and display images in buttons
  • .Net CheckedListBox control
    .Net ListBox control with check boxes
  • 2D & 3D Charts control
    includes more than 50 types of customizable Charts
  • .Net ContextMenu control
    .Net Context Menu with images, separators, ...
  • .Net DateTime object
    Gives access to all the .Net DateTime properties/methods
  • .Net Dictionary object
    Create dictionaries asoociating data with keys
  • .Net Directory object
    Simplifies manipulating directories and files
  • .Net DirectoryInfo object
    Simplifies manipulating directories and files
  • .Net DomainUpDown control
    Edit control with up and down controls
  • .Net Encryption/Decryption object
    Allows to encrypt/decrypt texts and/or files
  • .Net Environment object
    Gives programmatic access to your computer environment
  • .Net File object
    Simplifies manipulating files
  • .Net FileInfo object
    Simplifies manipulating files
  • .Net FTP object
    Use Ftp from your APL+Win applications
  • .Net LinkLabel control
    Looks like an Internet Link with a hand cursor, ...
  • .Net MaskedTextBox control
    Masked TextBox used to input phone, SS, Email, ...
  • .Net NotifyIcon control
    Display tray icon notifications with delay, decoration, ...
  • .Net NumericUpDown control
    Edit control with up and down buttons, accepting only numeric values
  • .Net Panel control
    panel control with the .Net Panel look & feel
  • .Net Path object
    Simplifies manipulating drives, directories and files
  • .Net Process object
    Launch any process/web site/... programmatically
  • .Net Ribbon control
    Use a simple ribbon control in your APL forms
  • .Net RegexTest Regular Expression Tester
    APL+Win Form allowing to easily & visually test Regular Expressions
  • .Net Regex object
    Allows to use Regular Expressions for validation purposes, ...
  • .Net RichTextBox control
    Much more powerful alternative to the APL RichEdit control
  • .Net SmtpClient object
    Allows to send text/Html Emails with attachments, priority, ...
  • .Net SortedDictionary control
    .Net dictionary object maintaining its keys sorted
  • .Net SplitContainer control
    A container control with a horizontal or vertical splitter
  • .Net SplitterPanel control
    A panel container control for the SplitContainer control
  • .Net TabControl control
    An alternative to the APL+Win Selector object with .Net look and feel
  • .Net TabPage control
    An alternative to the APL+Win Page object with .Net look and feel
  • .Net TextBox control
    A much more powerful Edit control with .Net look and feel
  • .Net TimeSpan control
    Gives access to all the .Net TimeSpan properties/methods
  • .Net WebClient object
    Allows to download/upload files
  • .Net WebBrowser control
    Include the powerful .Net WebBrowser in your APL forms
  • .Net XmlDocument object
    Allows to easily extract data from XML files
  • .Net XmlWriter object
    Easily programmatically work with XML files
  • .Net YouTube object
    Play YouTube videos within APL+Win forms

Getting Started


The best way to learn about zObjects is to read the zObjects Documentation.

Short Tutorial

All zObjects objects are APL functions contained in the zObjects.sf User Command File.

All zObjects functions start with a z or zz, followed by an uppercase letter, thus virtually eliminating any possible conflict with your own APL functions.

All you need to start using zObjects in your own workspace is to first load 2 fundamental functions from the zObjects.sf file:

     ]uload zObject zzInit /r

and then to run zzInit to register all the zObjects with the APL+Win system:


Now imagine that you would like to create the following dialog box:

All you need to do is to write the following APL function:

     ∇ Example
[1]   ←'ff'⎕wi'*Create' 'zForm'('*caption' 'Dialog Box')('*size'300 500)('minimumsize'200 400)'*Hide'
[2]   ←'ff'⎕wi'*.ed1.Create' 'zSimpleEdit'('wherelc'⍬ 100 ⍬ 250)('caption' 'Field1:')('anchor'1 2 3)
[3]   ←'ff'⎕wi'*.ed2.Create' 'zSimpleEdit'('wherelc' '>' '=' '=' '=')('caption' 'Field #2:')('anchor'1 2 3)
[4]   ←'ff'⎕wi'*.ed3.Create' 'zSimpleEdit'('wherelc' '>' '=' '=' '=')('caption' 'Field 3:')('anchor'1 2 3)
[5]   ←'ff'⎕wi'*.ed4.Create' 'zSimpleEdit'('wherelc' '>' '=' '=' '=')('caption' 'Field #4:')('anchor'1 2 3)
[6]   ←'ff'⎕wi'*.ed5.Create' 'zSimpleEdit'('wherelc' '>' ⍬ '>' '>')('anchor'1 2 3 4)
[7]   ←'ff'⎕wi'*.OK.Create' 'zButton'('wherelc' '=ed1' '<' ⍬ ⍬)('anchor'2 3)
[8]   ←'ff'⎕wi'*.Cancel.Create' 'zButton'('wherelc' '>' '=' '=' '=')('anchor'2 3)
[9]   ←'ff'⎕wi'AutoSize'
[10]  ←'ff'⎕wi'CenterScreen'
[11]  ←'ff'⎕wi'Show'

and then to bring in the following zObjects objects:

     ]uload zForm zEdit zSimpleEdit zLabel zButton /r


There is a lot of things happening in the short Example function code.

  • first a zForm object is created and immediately hidden (line 1): note that zForm inherits from the standard APL+Win Form object
  • its standard caption and size APL+Win properties are set (line 1)
  • the custom minimumsize property is set: this help prevent the user froem resizing the form to less than 200 by 400 pixels (line 1)
  • several zSimpleEdit objects are created (lines 2 to 6)
  • a zSimpleEdit object inherits from zEdit which itself inherits from the standard APL+Win Edit object
  • a zSimpleEdit object behaves like a zEdit object but gets yellow when it gets the focus and white when it loses the focus
  • the wherelc properties allow to position objects relative to other previously positionned object and to align them perfectly, ensuring their distances are perfectly constant, etc.
  • the anchor properties allow to ensure that objects are automatically and appropriately moved and resized when the user resizes the form
  • the AutoSize method allows to force the form to resize itself appropriately to the controls it contains (line 9)
  • the CenterScreen method centers the form on the screen (line 10)
  • the Show method finally displays the form (line 11)
  • note the margins which are the same all around the form
  • note the gaps between controls which are the same in the whole form

It would be too long to enter into more details here, but if this short example raised your interest, look at the zObjects extensive documentation for more details.

You can now resize the form and all controls will be automatically resized and/or moved: