Introduction

iwb+256

IWB+ © is an Add-On Visual Designer application for use with IWBasic© 2 / 3. It consists of a 'Drag-and-Drop' graphical interface that allows the User to quickly design their window/dialog layouts. The User can then change the properties of all forms and controls as well as select which handlers are required for their application.

In the background a powerful code builder is at work creating all the necessary files and generating all the code skeletons to support the User's selections. The User can then add their custom coding to the project.
At any time the User can compile the project from within IWB+ and see the end result.

Additionally, IWB+ generates a complete IWBasic 2 / 3 Project file (*.iwp) that the User may load directly into the IWBasic 2 / 3 IDE. The User is even able to modify their application in the IDE if desired (within certain simple guidelines) and their code will be retained if/when they return toIWB+.

This results in an environment that allows the User to easily mix their own code with code automatically generated by IWB+ in an efficient, User friendly manner.

Designer Features:

· Creates folder based IWB+ projects.
· Creates a complete IWBasic Project file (*.iwp).
· Supports window or dialog based projects.
· Unlimited number of forms (windows/dialogs) per project.
· Unlimited number of controls per form.
· Add *.lib, *.obj, *.res and/or *.asm files to projects.
· Simple navigation with Tab based mode control eliminates unnecessary desktop clutter.
· Easily create new projects or clone existing ones.
· Export projects, stripping all IWB+ protected section identifying text.
· Backup/Restore projects using internal utility.
· Auto creation of project manifest file.
· Compile and run User applications from inside IWB+.
· ' To-Do' List for each project.
· Uses no registry entries.

Form Editor

· Main form automatically created when project is created.
· Popup window to configure form/controls including style flags/colors/fonts/form icons.
· Popup to select desired event handlers to be automatically created for forms/controls.
· Add User defined style flags for forms/controls.
· Add up to 255 User defined defined handler messages per form/control.
· 22 built-in 'Drag and Drop' controls available from toolbar.
· 22 User defined 'Drag and Drop' controls available from toolbar.
· 11 toolbar buttons for positioning one/multiple controls.
· Toolbar buttons for creating peer/child windows/dialogs.
· All code needed to generate User's design layout is automatically created in realtime.
· Code generation accounts for structure variations between windows and dialogs.

Code Editor

· Scintilla© based code editor.
· Keyword highlight colors track IWBasic 2.0 IDE configuration settings or User settings.
· Dropdown list of all source files.
· Clickable list of all subroutines in current project.
· Toolbar option to add new source file to project.
· Open multiple IWB+ project files and optionally, non-project files.

Resource Editor

· Allows multiple selections when using file dialog to add resources.
· Creates skeletons when adding resources that require User input.

Menu Editor

· Tree view based editor.
· Unlimited number of menu titles.
· Unlimited number of popup levels.
· Unlimited number of menu items.
· Optional menu item disable on startup.
· All required code automatically generated including handlers.
· Preview configured menus.
· Import menus from other IWB+ projects.

Toolbar Editor

· Tree view based editor.
· User selected toolbar location (top,bottom,left,right).
· Changeable bitmap and button size.
· Optional tooltips.
· Optional use of bitmap.
· Optional bitmap load from handle, file or resource file.
· Optional use of Labels.
· Optional location for Labels (right or under bitmap).
· Optional button disable on startup.
· Generates all necessary code to locate toolbar including any necessary resizing code.
· Generates skeleton handlers for all buttons.
· Generates all code to load bitmap (from handle, file or resource file).
· Preview configured toolbars.
· Import toolbars from other IWB+ projects.

Tab Control Editor

· Tree view based editor.
· Unlimited number of tabcontrol tabs.
· All required code automatically generated including handlers.
· Preview configured tabcontrol files.
· Import tabcontrol files from other IWB+ projects.

Custom Control Editor

· Configure up to twenty-two User defined custom controls.
· Add up to 255 custom message handlers for each control.
· Add custom style flags for each custom control.

Tools Menu Editor

· Add User selected utilities to Tools Menu.
· No internal limit on the number that can be added.

Help Menu Editor

· Add User selected help files to Help Menu.
· No internal limit on the number that can be added.
· Allows addition of *.chm, *.pdf, and EBook(*.exe) formats.

Compiler Output

· Displays progress of compile and linking.
· On error, clicking on error line opens Code tab with source file containing error at the proper line.

User Preferences

· Set keywords to Mixed, Upper, or Lower case in Code Editor tab.
· Set defaults for width, height, font, foreground color and background color for windows, dialogs, and all controls.
· Select option to open last project on program startup.

Find in File

· Search for any sequence of characters in all ascii files in any directory and sub-directories.
· Maintain results of multiple searches.
· Select one or more result entries for deletion.
· Double-clicking entry opens source file to indicated line.

Tools

· Folder Clean-up - Removes selected file types from designated folder.
· Color Picker - Select colors and copy required code to clipboard.
· Toolbar Paint - Create toolbar bitmaps for use in project.
· Messagebox Builder - Simple means to create and configure MessageBoxes.

Misc

· Help Manual furnished in chm, pdf, and eBook formats.

Minimum Requirements:

· IWBasic© v. 2.0 or above (Copyright 2010-2014, Ionic Wind Software)
· 128MB of ram.
· 3.3MB Free hard drive space.
· Tested with Windows XP, Windows Vista, Windows 7, and Windows 8.1.

NOTE: Projects created with 'Visual Designer for IWBasic' are not compatible with 'IWB+'.

IWB+ A Visual Designer for IWBasic© 2/3 Ver 1.09 ©2011 - 2014 T. L. McCaughn All Rights Reserved.


What's Different?

I have been asked by some "What's different about IWB+?", followed by, "Is it just a fancy version of IWBasic's Dialog Editor in the IDE?"

They are fair questions, especially when you are asking people to spend their hard earned money to purchase a copy. Let's start answering the questions with a discussion of IWBasic's Dialog Editor.

The Dialog Editor allows the User to create a dialog, add and position controls, and set certain style flags. It will even allow the User to generate source code (including an optional skeleton handler). The main benefit is that it speeds up the process of adding and positioning controls. That benefit is enhanced by the fact that the User can generate a skeleton handler. Both are definite pluses over the manual trial and error method. It's also nice that you can save the layout and come back later and modify the layout (which is usually the case).

So what's the downside of IWBasic's dialog editor? The most obvious is the fact that it doesn't do windows; only dialogs. Then there is the matter of the cryptic numeric style flag numbers in the generated code. The biggest downside is that, once you enter even one character anywhere in the program you are working on, you can no longer use the simple copy and paste via the clipboard for making any layout updates. And the last thing I'll mention is that regardless of how many controls you have all the message handling is inside of the dialog's single message handler. That means on really large applications with a lot of controls you spend a lot of time scrolling back and forth searching for a single control's specific handler entries. To get around that you can rewrite the handler to use the ONMESSAGE, ONMENUPICK, and ONCONTROL commands. But if you do that then what good did the code generation do you?
This is not intended as an attack on the IDE's Dialog Editor. For many it is just fine and all they need/want. But to discuss differences I had to highlight those items.

The main strength of IWB+ is that, even while it generates more code automatically than the Dialog Editor, it allows the User to intersperse their specific code in with automatically generated code. This allows changes to be made to the layout without it becoming an exercise in cut and paste.

IWB+ allows the User to select which messages they want/need to handle. Skeleton code is then generated to support their selections using the ONMESSAGE, ONMENUPICK, and ONCONTROL commands. That makes finding the code for a specific message for a specific control extremely easy and fast.
Cryptic style codes are replaced with language constants in the generated code.

Almost forgot; it does do windows.

IWB+ is NOT a Visual Basic© or Visual C© type clone. An attempt was made to minimize the clutter on the desktop when working on any given portion of a project. That, coupled with the tab layout, makes the use of IWB+ highly intuitive.

The Scope of Use section describes the wide range of ways IWB+ can be used. The How It Works section describes the structure of an IWB+ project and how generated code is interspersed with User code. Reading these two sections will increase the User's comfort level with, and understanding of, IWB+.


Scope Of Use

The preference of Users, when it comes to visual designers, runs from one extreme to the other.

At one extreme are those that prefer to hand code everything. They wouldn't be caught in the same room with a visual designer of any kind. They tend to be proficient at coding. Manually coding a graphic interface doesn't appear to slow them down at all. They tend to feel that automatic code generation detracts from their control of the code.

At the other extreme are those who would never dream of writing a program without using a visual designer. In some rare cases, they might not be capable of creating a program from scratch without the aid of a visual designer of some sort.

Most people's preferences will fall somewhere between those two extremes. There are those who would use IWB+ the same as using IWBasic's Dialog Editor. IWB+'s structure (covered in detail in the How It Works section) fully supports its use in that manner. In this instance the User can create the initial layout of their forms and then open the project in the IWBasic IDE and never return to IWB+.

There are those who would do the same as the preceding except they would return to IWB+ if they needed to make an adjustment in the layout; each time returning to the IDE to continue their coding.

There are those who would maybe only use IWB+ to do the initial layout and use the menu, tab control, and toolbar editors to generate that code.

And finally there are those who would remain totally within IWB+ up to and including the compiling of their application.

IWB+ is constructed in such a way that everyone should be able to find a comfortable scope of usage that best suits them.


How It Works

This section contains two subsections that outline IWB+'s project file structures and how the automatic code generation is handled.

Project Structure
Describes how all the files in an IWB+ project are built and used while the Useris creating an application.

Code Generation
Describes how automatically generated code is maintained separate from, yet interspersed with, the User's specific application code.


Project Structure

How It Works > Project Structure

This section describes, in detail, how, when, and where all the files in a IWB+ project are built and used.

The foundation of IWB+ is built upon IWBasic's Project concept. An IWBasic Project consists of a project file (*.iwp), multiple source files (*.iwb), one or more include files (*.inc), and a resource file (*.rc). One of the *.iwb files is usually a special case file to handle global variables. The IWBasic project file (*.iwp) furnishes information to the compiler and linker, telling them which files to process in order to create a *.exe, *.lib, or *.dll file

As has been mentioned before, IWB+ builds folder-based projects. When creating a new project the User must select an existing empty folder or create a new one to hold all the project's files. To this empty folder IWB+ automatically adds a sub folder labeled 'res'.

The following table describes all the files that may be found in an IWB+ project folder:

Ext | Usage | Created | Destroyed
*.vdp | This is the main file for any given IWB+ project. It contains form/control definitions and source file information. Data in the file is used to create all the auto generated code, as well as construct the *.iwp file which is used for compiling and linking. | Created when a User selects either the "New" or "Save As" options for creating a new project. | Can only be deleted manually, by the User, outside of IWB+. Once deleted the file can not be re-created.
*.iwp | The main file for creating projects inside IWBasic. Used by IWBasic to compile and link all the source files into an exe, lib, or dll file. IWB+ creates one for each IWB+ project to facilitate compiling and linking from inside IWB+. | Created when the IWB+ project is created. It is deleted and recreated each time a change is made in the IWB+ project. | Can only be deleted manually, by the User, outside of IWB+. Once deleted the file can be re-created as long as all the other files in the IWB+ project are still intact.
*.iwb | All IWBasic source code is contained in multiple files of this type. | When an IWB+ project is created an ".iwb" file is automatically created as the main program file. This main file contains the main form handler and calls to the initialization routines for all other forms and dialogs in the project. At the same time, a "globals.iwb" file is created that will contain all global variables for the project. As other forms and/or dialogs are added to the project an ".iwb" file is created for each one, with the same name as the form/dialog. These files contain the initialization routine and the handler routine for the corresponding form/dialog. There are times when is helpful to group common subroutines in a separate ".iwb" file. The User can add these as desired. | The main program file can only be deleted manually, by the User, outside of IWB+. Once deleted the file can not be re-created and the project can no longer be compiled. Files tied to forms/dialogs (other than the main form) can not be deleted from inside IWB+ directly but may be removed by deleting the corresponding form/dialog. Deleting these files manually, outside of IWB+, will result in the project not compiling and the data can not be recovered. Files added by the Userthat are not a result of adding a form/dialog may be deleted, inside IWB+, at any time. However, it is the User's responsibility to remove any calls to deleted subroutines from elsewhere in the project. Once deleted the information can not be recovered.
*.inc | Contains declarations of project constants, imports and external subroutines | Primary "*inc" file created during project creation. Additional, existing files may be added by the User as needed. | The primary file may not be removed from inside IWB+. If it is removed manually, outside IWB+, the data can not be recovered and the project will not compile. Files added by the User can be removed at any time. It is the User's responsibility to insure that nothing that is needed is deleted. These files are not deleted from the disk drive when they are deleted from the project and may be added back at any time.
*.rc | Contains resources used by the project. | Created when the IWB+ project is created. Automatically contains an entry for the project's manifest file. | Can not be deleted from inside IWB+. If deleted outside IWB+, the project will still compile only if there are no resources in the file that are being used by the project.
*.exe | The User's application executable. | Created when the User selects a 'compile' option. | Can not be deleted from inside IWB+. If deleted outside IWB+ it can be recreated as long as all the other project file remain intact.
*.res | The compiled version of the *.rc file. | Created when the User selects a 'compile' option. | Can not be deleted from inside IWB+. If deleted outside IWB+ it can be recreated as long as the *.rc file remains intact.
*.manifest | The manifest file for the project. | Created automatically when the IWB+ project is created. | Can not be deleted from inside IWB+. If deleted outside IWB+ it can be recreated but not automatically.
*.vdm | Contains data for creating a menu for a form/dialog. There is one menu per file. A given menu may be used by more than one form/dialog. | Created when a new menu is added to the project while in the Menu Editor. | A menu file can be deleted safely, inside or outside IWB+ , provided the menu is not being used by any form/designer. Once a menu file is deleted the data can not be recovered.
*.vdta | Contains data for creating a tab control for a form/dialog. There is one tab control per file. A given tab control may be used by more than one form/dialog. | Created when a new tab control is added to the project while in the Tab Control Editor. | A tab control file can be deleted safely, inside or outside IWB+, provided the tab control is not being used by any form/designer. Once a tab control file is deleted the data can not be recovered.
*.vdtb | Contains data for creating a toolbar for a form/dialog. There is one toolbar per file. A given toolbar may be used by more than one form/dialog. | Created when a new toolbar is added to the project while in the ToolBar Editor. | A toolbar file can be deleted safely, inside or outside IWB+, provided the toolbar is not being used by any form/designer. Once a toolbar file is deleted the data can not be recovered.
*.obj *.asm *.res *.lib | Contains source code in various formats. | Created outside of IWB+ and added via the Project sub-menus. | Removed from the project via the Project sub-menus but not deleted.
*_todo.txt | Contains User entered items that need to be completed for the project. | Created when the User selects Project / Project 'ToDo' List in the Main Menu. | Can only be deleted manually, by the User, outside of IWB+.

The following files are exact copies of the corresponding files without the 'tmp' extension. They are temporary files created when a new or existing project is first opened. They are automatically deleted and new current versions are created each time the User selects the IWB+ project 'Save' option. If the User declines to save changes when prompted the non-tmp versions of these files are deleted and replaced by copies of the tmp files without the tmp extension. This amounts to a one level undo for the project.

· *.vdptmp
· *.iwptmp
· *.iwbtmp
· *.inctmp
· *.rctmp
· *.exetmp
· *.restmp

A special case of the above is the *.iwbtmx file. This file is created when a new form is added to the project. If the User is prompted to save the project and the User declines then this file extension insures that the new form is not inadvertently 'restored' like the other temp files. In this case it will just be deleted. Once a form file has been saved one time then the procedure to undo (above) is followed.

The following are the typical files created when compiling and linking a project. If they exist when the process is started they are just overwritten. These files may be removed by use of the Cleanup tool from IWB+'s Tool menu.

· *.o
· *.map
· *.a
· *.$$$lib.link

The Code Generation section will touch on some of these files in greater detail.


Code Generation

How It Works > Code Generation

The heart of the IWB+ is its ability to intersperse User entered code with automatically generated code. There are several techniques that can be used to accomplish this feat. IWB+ uses one where various areas of the source files are set aside and reserved for code generated automatically. User entered code has to be placed outside these protected areas.

The beginning and ending of reserved areas are identified with a three character sequence, '@@, at the very beginning of a line. Therefore it is vital that the User never start a line of code with those 3 characters.

IWB+ utilizes multiple reserved areas therefore there has to be a means to properly identify each area. This is done with a unique label for each area. This results in reserved areas starting with '@@LABEL and ending with '@@.

And finally, the reserved areas, because of the code they can contain have to be located at the proper place within the User's application. In order to insure that this happens, all reserved areas are created when the source files are created. This is done regardless of whether or not the reserved area will be used in a particular application.

The current list of labels for reserved areas are:

For *.iwb files

· '@@INCLUDE
· '@@CREATE(only applies to form/dialog '.iwb' files)
· '@@CTRL_INIT
· '@@INIT
· '@@INITFORMS
· '@@INITMENU
· '@@MENUHANDLERS
· '@@TOOLBAR
· '@@TOOLBARHANDLERS
· '@@HANDLERS
· '@@TABCONTROL
· '@@TBSIZE
· '@@GLOBAL (only applies to 'globals.iwb')

For *.inc files (only applies to files created by IWB+)

· '@@CONST
· '@@MENUCONST
· '@@TOOLBARCONST
· '@@EXTERN

For *.rc files

· ;'@@TOOLBAR (Notice the leading ';' which is the comment marker for rc files.)

This best way to understand what all this looks like is with examples.

Example #1
Assume the User creates a project named 'ExOne' with a main window id of win1. The files that are created initially are:

win1.iwb

'@@INCLUDE - Designer generated, do not edit

$MAIN

$INCLUDE "ExOne.inc"

$INCLUDE "globals.iwb"

'@@

OpenMainWindow()

ProcessAll()

End

Sub OpenMainWindow()

'@@CREATE_win1

OpenWindow win1,0,0,400,300,@SIZE|@MINBOX|@MAXBOX|@CAPTION|@SYSMENU,0,"Form1",&win1_handler

'@@

'@@CTRL_INIT_win1

'@@

'@@INIT_win1

SetFont win1,"tahoma",10,400,0

SetWindowColor win1, RGB(255,255,255)

FrontPen win1, RGB(0,0,0)

Centerwindow win1

'@@

'@@INITFORMS

'@@

'@@INITMENU

'@@

'@@MENUHANDLERS

'@@

'@@TOOLBAR

'@@

'@@TOOLBARHANDLERS

'@@

'@@HANDLERS_win1

OnMessage win1,@IDCLOSEWINDOW,&OnMainClose

'@@

Endsub

Sub win1_handler

Select @message

Case @IDSIZE

'@@TBSIZE

'@@

EndSelect

Endsub

Sub ProcessAll()

Waituntil IsWindowClosed(win1)

Endsub

Sub OnMainClose(),INT

'@@TOOLBARCLOSE

'@@

CloseWindow win1

Return FALSE

Endsub

'@@TABCONTROL

'@@

Notice in the above that there is code inside protected areas and there is code in non protected areas. The code inside the protected areas is re-generarated each time a change is made to the project. The code outside the protected area is a one time generation when the project is created.

ExOne.inc

'@@CONST - Designer generated - do not edit

'@@

'@@MENUCONST - Designer generated - do not edit

'@@ Add User constants below this line

'@@TOOLBARCONST - Designer generated - do not edit

'@@ Add User constants below this line

'@@EXTERN - Designer generated - do not edit

'@@ Add User externals below this line

There are no entries in this file because in this example no controls, menus, toolbars, or external function declarations have been added to the project.

ExOne.rc

1 24 "c:\__vd2\projects\ExOne\res\ExOne.manifest"

;'@@TOOLBAR - Designer Generated Resources

;'@@

The manifest file is created in the project's res folder and then added to the rc file.

globals.iwb

PROJECTGLOBAL "ON"

'@@GLOBAL - Designer generated - do not edit

WINDOW win1

'@@ Add User global variables below this line

PROJECTGLOBAL "OFF"

The window, win1, is declared as a global variable.

Example #2

Assume the User creates a project named 'ExTwo' with a main window id of win1. Two buttons are added to win1.

A child window, win2, is added to win1 and it too has two buttons.

A child dialog, d1, is added to win1 and it also has two buttons.

A menu is added to win1 along with a toolbar.

The toolbar is optionally loaded from the resource file.

The files that are created initially are:

win1.iwb

'@@INCLUDE - Designer generated, do not edit

$MAIN

$INCLUDE "ExTwo.inc"

$INCLUDE "globals.iwb"

'@@

OpenMainWindow()

ProcessAll()

End

Sub OpenMainWindow()

'@@CREATE_win1

OpenWindow win1,0,0,400,300,@SIZE|@MINBOX|@MAXBOX|@CAPTION|@SYSMENU,0,"Form1",&win1_handler

'@@

'@@CTRL_INIT_win1

Control win1,@SysButton,"Button 1",36,224,60,25,0,win1_BUTTON1

Control win1,@SysButton,"Button 2",309,227,60,25,0,win1_BUTTON2

'@@

'@@INIT_win1

SetFont win1,"tahoma",10,400,0

SetWindowColor win1, RGB(255,255,255)

FrontPen win1, RGB(0,0,0)

SetFont win1,"tahoma",10,400,0,win1_BUTTON1

SetControlColor win1,win1_BUTTON1,RGB(0,0,0),RGB(192,192,192)

SetFont win1,"tahoma",10,400,0,win1_BUTTON2

SetControlColor win1,win1_BUTTON2,RGB(0,0,0),RGB(192,192,192)

Centerwindow win1

'@@

'@@INITFORMS

Init_win2()

Init_d1()

'@@

'@@INITMENU

BEGINMENU win1

MENUTITLE "File"

MENUITEM "Open", 0,win1_menu2

MENUITEM "Close", @MENUDISABLE,win1_menu3

SEPARATOR

MENUITEM "Quit", 0,win1_menu6

MENUTITLE "Help"

MENUITEM "About", 0,win1_menu8

SEPARATOR

MENUITEM "Help File", 0,win1_menu10

ENDMENU

'@@

'@@MENUHANDLERS

OnMenuPick win1,win1_menu2,&DoMnu_win1_menu2

OnMenuPick win1,win1_menu3,&DoMnu_win1_menu3

OnMenuPick win1,win1_menu6,&DoMnu_win1_menu6

OnMenuPick win1,win1_menu8,&DoMnu_win1_menu8

OnMenuPick win1,win1_menu10,&DoMnu_win1_menu10

'@@

'@@TOOLBAR

INT tbArray[12]

tbArray = win1_mytb_New, 0, win1_mytb_Delete, 0, win1_mytb_Cut,_

win1_mytb_Copy, win1_mytb_Paste, 0, win1_mytb_UnDo, win1_mytb_ReDo, 0, win1_mytb_Print

IF LOADTOOLBAR(win1,"TB1",win1_mytb,tbArray, 12,@TBTOOLTIPS|@TBTOP)

ENDIF

CONTROLCMD(win1,win1_mytb,@TBSETBITMAPSIZE, 16, 15)

CONTROLCMD(win1,win1_mytb,@TBSETBUTTONSIZE, 24, 23)

INT tbleft, tbtop, tbw, tbh, tbbw, tbbh

GETCLIENTSIZE win1, tbleft, tbtop, tbw, tbh

tbbw = CONTROLCMD(win1,win1_mytb,@TBGETBUTTONWIDTH)

tbbh = CONTROLCMD(win1,win1_mytb,@TBGETBUTTONHEIGHT)

SETSIZE win1, tbleft, tbtop, tbw, tbbh,win1_mytb

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_New,"but_1"

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_Delete,"but_3"

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_Cut,"but_5"

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_Copy,"but_6"

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_Paste,"but_7"

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_UnDo,"but_9"

CONTROLCMD win1,win1_mytb,@TBENABLEBUTTON,win1_mytb_UnDo,0

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_ReDo,"but_10"

CONTROLCMD win1,win1_mytb,@TBENABLEBUTTON,win1_mytb_ReDo,0

CONTROLCMD win1,win1_mytb,@TBSETTIP,win1_mytb_Print,"but_12"

'@@

'@@TOOLBARHANDLERS

OnControl win1,win1_mytb_New,0,&DoTB_win1_mytb_but_1

OnControl win1,win1_mytb_Delete,0,&DoTB_win1_mytb_but_3

OnControl win1,win1_mytb_Cut,0,&DoTB_win1_mytb_but_5

OnControl win1,win1_mytb_Copy,0,&DoTB_win1_mytb_but_6

OnControl win1,win1_mytb_Paste,0,&DoTB_win1_mytb_but_7

OnControl win1,win1_mytb_UnDo,0,&DoTB_win1_mytb_but_9

OnControl win1,win1_mytb_ReDo,0,&DoTB_win1_mytb_but_10

OnControl win1,win1_mytb_Print,0,&DoTB_win1_mytb_but_12

'@@

'@@HANDLERS_win1

OnMessage win1,@IDCLOSEWINDOW,&OnMainClose

OnControl win1,win1_BUTTON1,@BN_CLICKED,&OnClick_win1_BUTTON1

OnControl win1,win1_BUTTON2,@BN_CLICKED,&OnClick_win1_BUTTON2

'@@

Endsub

Sub win1_handler

Select @message

Case @IDSIZE

'@@TBSIZE

INT tb_left, tb_top, tb_w, tb_h, tb_bw, tb_bh

GETCLIENTSIZE win1, tb_left, tb_top, tb_w, tb_h

tb_bw = CONTROLCMD(win1,win1_mytb,@TBGETBUTTONWIDTH)

tb_bh = CONTROLCMD(win1,win1_mytb,@TBGETBUTTONHEIGHT)

SETSIZE win1, tb_left, tb_top, tb_w, tb_bh,win1_mytb

'@@

EndSelect

Endsub

Sub ProcessAll()

Waituntil IsWindowClosed(win1)

Endsub

Sub OnMainClose(),INT

'@@TOOLBARCLOSE

'@@

CloseWindow win1

Return FALSE

Endsub

'@@TABCONTROL

'@@

Sub OnClick_win1_BUTTON1(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub OnClick_win1_BUTTON2(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoMnu_win1_menu2(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoMnu_win1_menu3(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoMnu_win1_menu6(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoMnu_win1_menu8(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoMnu_win1_menu10(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_1(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_3(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_5(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_6(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_7(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_9(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_10(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub DoTB_win1_mytb_but_12(),INT

'TODO: write handler code

Return FALSE

EndSub

The things we notice different from ExOne by section:

Section | Additions/Changes
'@@CTRL_INIT | Commands to create the two button controls
'@@INIT | Font and color commands for the two buttons have been added.
'@@INITFORMS | Routines that actually create win2 and d1 are called.
'@@INITMENU | Menu that was created with the Menu Editor.
'@@MENUHANDLERS | Declarations for the routines that are called when a menu option is selected.
'@@TOOLBAR | All the code to create a toolbar. In this case the toolbar bitmap is loaded from the resource file and is using the optional tooltips.
'@@TOOLBARHANDLERS | Declarations for the routines that are called when a toolbar button is clicked.
'@@HANDLERS | Declarations, for the routines that are called when the buttons are clicked, have been added.
'@@TBSIZE | Code to resize toolbar if parent window is resized.
'@@TOOLBARCLOSE | No entry in this case. Had the toolbar used the 'bitmap from handle' option then a DELETEIMAGE command would have been placed here.

Following the above are all the handler subroutines skeletons that were declared above.

win2.iwb

'@@INCLUDE - Designer generated, do not edit

$INCLUDE "ExTwo.inc"

$INCLUDE "globals.eba"

'@@

global sub Init_win2()

'@@CREATE_win2

OpenWindow win2,202,35,187,161,@NOCAPTION,win1,"win2",&win2_handler

'@@

'@@CTRL_INIT_win2

Control win2,@SysButton,"Button 1",15,97,60,25,0,win2_BUTTON1

Control win2,@SysButton,"Button 2",104,96,60,25,0,win2_BUTTON2

'@@"

'@@INIT_win2

SetFont win2,"tahoma",10,400,0

SetWindowColor win2, RGB(255,0,0)

FrontPen win2, RGB(0,0,0)

SetFont win2,"tahoma",10,400,0,win2_BUTTON1

SetControlColor win2,win2_BUTTON1,RGB(0,0,0),RGB(192,192,192)

SetFont win2,"tahoma",10,400,0,win2_BUTTON2

SetControlColor win2,win2_BUTTON2,RGB(0,0,0),RGB(192,192,192)

'@@

'@@TOOLBAR

'@@

'@@TOOLBARHANDLERS

'@@

'@@HANDLERS_win2

OnMessage win2,@IDCLOSEWINDOW,&On_win2_Close

OnControl win2,win2_BUTTON1,@BN_CLICKED,&OnClick_win2_BUTTON1

OnControl win2,win2_BUTTON2,@BN_CLICKED,&OnClick_win2_BUTTON2

'@@

Endsub

Sub win2_handler

Select @message

EndSelect

Endsub

Sub On_win2_Close(),INT

CloseWindow win2

Return FALSE

Endsub

'@@TABCONTROL

'@@

Sub OnClick_win2_BUTTON1(),INT

'TODO: write handler code

Return FALSE

EndSub

Sub OnClick_win2_BUTTON2(),INT

'TODO: write handler code

Return FALSE

EndSub

Shows the same additions as win1 to support the addition of the two buttons. The 'global sub Init_win2' routine has been added to create this window.

It should be noted that there is no '@@INITFORMS section in this file. Only the project's main form file will have that section.

d1.iwb

'@@INCLUDE - Designer generated, do not edit

$INCLUDE "ExTwo.inc"

$INCLUDE "globals.eba"

'@@

global sub Init_d1()

'@@CREATE_d1

CreateDialog d1,0,0,400,300,@SIZE|@MINBOX|@MAXBOX|@CAPTION|@SYSMENU,win1,"d1",&d1_handler

'@@

'@@CTRL_INIT_d1

Control d1,@SysButton,"Button 1",302,217,60,25,0,d1_BUTTON1

'@@

Endsub

Sub d1_handler

Select @message

Case @IDInitDialog

'@@INIT_d1

SetFont d1,"tahoma",10,400,0,d1_BUTTON1

SetControlColor d1,d1_BUTTON1,RGB(0,0,0),RGB(192,192,192)

'@@

'@@TOOLBAR

'@@

'@@TOOLBARHANDLERS

'@@

'@@HANDLERS_d1

OnMessage d1,@IDCLOSEWINDOW,&On_d1_Close

OnControl d1,d1_BUTTON1,@BN_CLICKED,&OnClick_d1_BUTTON1

'@@

Case @IDSIZE

'@@TBSIZE

'@@

EndSelect

Endsub

Sub On_d1_Close(),INT

CloseDialog d1,@IDOK

Return FALSE

Endsub

'@@TABCONTROL

'@@

Sub OnClick_d1_BUTTON1(),INT

'TODO: write handler code

Return FALSE

EndSub

Shows the same additions as win2 to support the addition of the two buttons. The 'global sub Init_d1' routine has been added to create this dialog.

It should be noted that there is no '@@INITFORMS section in this file. Only the project's main form file will have that section.

Also notice that there is a difference in the location of some of the protected areas. This is due to the internal differences between windows and dialogs.

ExTwo.inc

'@@CONST - Designer generated - do not edit

CONST win1_BUTTON1 = 0x101

CONST win1_BUTTON2 = 0x102

CONST win2_BUTTON1 = 0x101

CONST win2_BUTTON2 = 0x102

CONST d1_BUTTON1 = 0x101

'@@ Add User constants below this line

'@@MENUCONST - Designer generated - do not edit

CONST win1_menu2 = 0x1001

CONST win1_menu3 = 0x1002

CONST win1_menu6 = 0x1003

CONST win1_menu8 = 0x1004

CONST win1_menu10 = 0x1005

'@@ Add User constants below this line

'@@TOOLBARCONST - Designer generated - do not edit

CONST win1_mytb = 0x2000

CONST win1_mytb_New = 0x2001

CONST win1_mytb_Delete = 0x2002

CONST win1_mytb_Cut = 0x2003

CONST win1_mytb_Copy = 0x2004

CONST win1_mytb_Paste = 0x2005

CONST win1_mytb_UnDo = 0x2006

CONST win1_mytb_ReDo = 0x2007

CONST win1_mytb_Print = 0x2008

'@@ Add User constants below this line

'@@EXTERN - Designer generated - do not edit

declare extern Init_win2()

declare extern Init_d1()

'@@ Add User externals below this line

Shows all the constant declarations for all the controls that have been added.

Shows the two external declarations for the routines that create win2 and d1.

globals.iwb

PROJECTGLOBAL "ON"

'@@GLOBAL - Designer generated - do not edit

WINDOW win1

WINDOW win2

DIALOG d1

'@@ Add User global variables below this line

PROJECTGLOBAL "OFF"

Contains the global declarations for win1, win2, and d1.

ExTwo.rc

1 24 "c:\__vd2\projects\ExTwo\res\ExTwo.manifest"

;'@@TOOLBAR - Designer Generated Resources

TB1 BITMAP "C:\\__VD2\\projects\\ExTwo\\res\\edittoolbar.png"

;'@@

Shows the added entry for the toolbar bitmap because the 'load from resource' option had been selected.

In the rest of the help file there will be references made to the protected sections. This portion of the help file should be a useful reference when studying those other sections.


User Interface

This section will cover details of the Graphical User Interface (GUI) of IWB+. Annotated screenshots will be used where possible to help identify specific features of the interface.

The OverView section identifies the functional areas of the User's screen.

The Main Menu section describes the functionality of all IWB+'s main window menu options.

The Main ToolBar section describes the functionality of all IWB+'s main window toolbar buttons.

The Main Tab Control section describes the functionality of IWB+'s main window Tab Control and the Functional Tabs it controls.


OverView

User Interface > OverView

This section identifies the functional areas of the User interface to IWB+.

The following screenshot is divided into sections. Each section has its own page in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the tooltip.

Click on an area to go to the page for that section.

WorkSpaceMain Tab ControlMain ToolBarMain MenuCaption Bar Overview


Caption Bar

User Interface > Caption Bar

This section describes the Caption Bar area of IWB+. Other portions of the help file may refer to this section when explaining an activity.

Caption Bar

The Caption Bar contains the IWB+ small icon and the name.

When a project is open the project name will be displayed. In the example it is 'x1'.

If a project has unsaved changes pending the project name will be followed by an asterisk (as shown in the example).


Main Menu

User Interface > Main Menu

This section describes the Main Menu area of IWB+. Other portions of the help file may refer to this section when explaining an activity.

Main Menu

The main menu bar has 6 options:

File, Project, Build, Editors, Tools, and Help.

Clicking on File results in a dropdown menu with the following options (described below):

Option

Description

New Project

Opens the "New Project" dialog, creates a new IWB+ project, and opens it. If there is a project currently opened, it will be closed. If the current project has unsaved changes, the User will be prompted to save those changes before the project is closed. This option has a corresponding Main ToolBar button. See the How-To ð Projects ð Create a New Project section for additional details.

Open Project

Opens the "Open File" dialog and allows the User to load an existing project. If there is a currently opened project it is handled as described above. This option has a corresponding Main ToolBar button. See the How-To ð Projects ð Open an Existing Project section for additional details.

Close Project

Closes the current project. If the current project has unsaved changes, the User will be prompted to save those changes before the project is closed. This option is disabled when no project is open. See the How-To ð Projects ð Close a Project section for additional details.

Save Project

Saves all changes made to the current project. This option is disabled when there are no changes to save. See the How-To ð Projects ð Save a Project section for additional details.

Save Project As

Opens the 'Save File' dialog and allows the User to save a project to a new project. Any unsaved changes to the current project will NOT be saved to the current project but will be saved to the new project. The saved project then becomes the current project. This option is disabled when no project is open. See the How-To ð Projects ð Save a Project section for additional details.

New File

Opens the "New File" dialog, creates a new, non-form, IWBasic source file in the IWB+ project and opens it. This option has a corresponding Code Editor toolbar button. See the How-To ð Files ð Add a File section for additional details.

Disabled when the Code Editor tab is not selected.

Open File

Opens the "Open File" dialog and allows the User to load an existing file. This option has a corresponding Code Editor toolbar button. See the How-To ð Files ð Open a File section for additional details. Disabled when the Code Editor tab is not selected.

Close File

Closes the currently selected file in the Code Editor tab. If the current file has unsaved changes, the User will be prompted to save those changes before the file is closed. This option has a corresponding Code Editor toolbar button. See the How-To ð Files ð Close a Filesection for additional details. Disabled when the Code Editor tab is not selected.

Save File

Saves all changes made to the currently selected, non-project file in the Code Editor tab. This option is disabled when there are no changes to save. This option has a corresponding Code Editor toolbar button. See the How-To ð Files ð Save a File section for additional details. Disabled when the Code Editor tab is not selected.

Save File As

Opens the 'Save File' dialog and allows the User to save the currently selected file in the Code Editor tab.to a new, non-project source file. Any unsaved changes to the currently selected file in the Code Editor tab will NOT be saved to the currently selected file but will be saved to the new file. What occurs next depends on whether or not the currently selected file is a project or non-project file. See the How-To ð Files ð Save a File section for additional details.

Export

Copies the current project to a new destination; stripping all the 'protected section' designators in the process. See the How-To ð Projects ð Export a Project section for additional details.

Preferences

See Below.

Backup

Copies the entire contents of the current project's project folder to a single compressed file to a destination of the User's choosing. See the How-To ð Projects ð Backup a Project section for additional details.

Restore

Decompresses a project backup file into all the component files to a destination of the User's choosing. See the How-To ð Projects ð Restore a Project section for additional details.

Recent Projects...

Clicking on Recent Projects results in a popup menu with a list of up to 10 of the last projects that were opened. The projects will be listed with the most recent first and the least recent last.

Clicking an entry will open the selected project. If the selected project no longer exists the User will be notified, the entry removed, and the popup redisplayed. If a valid selection is made the User is prompted to save any unsaved changes to the current project, if one exists.

Recent Files...

Clicking on Recent Files results in a popup menu with a list of up to 10 of the last non-project files that were opened. The files will be listed with the most recent first and the least recent last.

Clicking an entry will open the selected file. If the selected file no longer exists the User will be notified, the entry removed, and the popup redisplayed. Disabled when the Code Editor tab is not selected.

Exit

If there is a current project, it is closed after prompting to save any unsaved changes. Then IWB+ is closed.

Clicking on File/Preferences results in a menu with the following options (described below):

Option | Description
General | Opens the "General Preferences" dialog, which allows the User to select whether or not the last opened project and the last non-project file on program startup. See the How-To ð Set Startup Preferences section for additional details.
Compiler | Opens the "Compiler Selection" dialog, which allows the User to select which compiler, if any, to use when attempting to compile a project. See the Preferences ð Compiler section for additional details.
Form Editor | Opens the "Form Preferences" dialog which allows the User to select several aspects of the Form Editor Tab's visual appearance. See the Preferences ð Form Editor section for additional details.
Code Editor | Opens the "Code Editor Preferences" dialog which allows the User to select numerous aspects of the code editor's visual appearance. See the Preferences ð Code Editor section for additional details.
Basic Control Defaults | Opens the "Basic Control Defaults" dialog which allows the User to set the width, height, colors, and fonts for all the built-in forms/controls. These establish the default values for all the listed objects when they are added. See the Functional Tabs ð Form Editor section for additional details.
Custom Control Defaults | Opens the "Custom Control Defaults" dialog which allows the User to set the width, height, colors, and fonts for any/all custom controls the User has configured with the Custom Control Editor. These establish the default values for all the listed custom controls when they are added. See the Functional Tabs ð Form Editor ð Adding/Deleting Controls and Editors ð Custom Control Editor sections for additional details.

Clicking on Project results in a dropdown menu with the following options (described below):

Main Menu / Project

Option | Description
Options | Opens the "Modify Project Options" dialog, which allows the User to modify a limited number of options for the current project. See the How-To ð Projects ð Set Project Options section for additional details.
Insert File Into Project | Inserts the currently selected non-project source file into the current project. Disabled when the Code Editor tab is not selected. Disabled when the currently selected source file is not a non-project file. See the How-To ð Files ð Insert File section for additional details.
Insert Library/Object/Assembly Files Into Project | Opens the Add obj, asm, res, or lib File dialog which allows the User to select one or more of the indicated file types to the project. See the How-To ð Files ð Insert File section for additional details.
Manage Includes | Opens the "Manage Includes" dialog which allows the User to add additional include files to the project. See the How-To ð Add Includes section for additional details.
Project 'To-Do' List | Opens the "Project ToDo List" dialog which allows the User to maintain a list of things to do for the current project. See the To-Do List section for additional details.

Clicking on Build results in a dropdown menu with the following options (described below):

Main Menu / Build

Option | Description
Run | Executes the exe file for the current project, if it exists. See the How-To ð Projects ð Run a Project section for additional details.
Compile | Compiles the current project. See the How-To ð Projects ð Compile a Project section for additional details.
Compile and Run | Compiles the current project and, if successful, executes the resulting exe file. See the How-To ð Projects ð Run a Project and How-To ð Projects ð Compile a Project sections for additional details.
Compile Resource | Compiles the current project's resource file. See the How-To ð Projects ð Compile a Resource section for additional details.
Debug | Not Implemented

Clicking on Editors results in a dropdown menu with the following options (described below):

Main Menu / Editors

Option | Description
Menu | Opens the "Menu Editor" dialog which allows the User to create one or more menus to be used in the current project. See the Editors ð Menu Editor section for additional details.
Toolbar | Opens the "Toolbar Editor" dialog which allows the User to configure one or more toolbars to be used in the current project. See the Editors ð ToolBar Editor section for additional details.
Resource | Opens the "Resource Editor" dialog which allows the User to configure resource entries to be used in the current project. See the Editors ð Resource Editor section for additional details.
Tab Control | Opens the "Tab Control Editor" dialog which allows the User to configure one or more tab controls to be used in the current project. See the Editors ð Tab Control Editor section for additional details.
Custom Controls | Opens the "Custom Control Editor" dialog which allows the User to configure one or more of the 22 available custom controls to be used in the current project. See the Editors ð Custom Control Editor section for additional details.
Tools Menu | See Below.
Help Menu | See Below.

Clicking on Editors/Tools Menu results in a menu with the following options (described below):

Option | Description
Add Tool | Opens the "Add Tool" dialog, which allows the User to add additional tools to the Tools menu. See the Editors ð Tools Menu Editor section for additional details.
Remove Tool | Opens the "Remove Tool" dialog, which allows the User to remove items from the Tools menu that were added by the User. See the Editors ð Tools Menu Editor section for additional details.

Clicking on Editors/Help Menu results in a menu with the following options (described below):

Option | Description
Add Help | Opens the "Add Help" dialog, which allows the User to add additional help files to the Help menu. See the Editors ð Help Menu Editor section for additional details.
Remove Help | Opens the "Remove Help" dialog, which allows the User to remove items from the Help menu that were added by the User. See the Editors ð Help Menu Editor section for additional details.

Clicking on Tools results in a dropdown menu with the following options (described below):

Main Menu / Tools

Option | Description
File Cleanup | Opens the "Clean Folder" dialog, which allows the User to select a folder to remove selected file types from. See the Utilities ð Folder Cleanup section for additional details.
Color Picker | Opens the "Color Picker" dialog, which allows the User to select colors to be used in the project and paste the proper code in the appropriate locations. See the Utilities ð Color Picker section for additional details.
Toolbar Paint | Opens the "Toolbar Paint" 3rd-party application which allows the User to create the actual toolbar bitmaps used when configuring Toolbars with the Toolbar Editor. See the Utilities ð Toolbar Paint section for additional details.
Messagebox | Opens the "Messagebox Builder" dialog which allows the User to easily created messageboxes and paste the auto-generated code in the project. See the Utilities ð Messagebox Builder section for additional details.
Other Entries | Opens the other entries that the User has added to the Tools menu with the Tools Menu Editor.

Clicking on Help results in a dropdown menu with the following options (described below):

Main Menu / Help

Option | Description
About... | Opens the "About" dialog, (shown below) which shows the User the current version info for IWB+.
Ionic Wind Web Site | Opens the User's web browser to the Ionic Wind web site main page.
Support Forums | Opens the User's web browser to the Ionic Wind support forums main web page.
IWB+ Help | Opens this help file.

About


Main ToolBar

User Interface > Main ToolBar

This section describes the Main ToolBar area of IWB+. Other portions of the help file may refer to this section when explaining an activity.

Maint Toolbar

The main tool bar has 13 buttons. The function of each is described below.

Clicking on a toolbar button results in the described action:

Button | Result
New Project | Opens the "New Project" dialog, creates a new IWB+ project, and opens it. If there is a project currently opened, it will be closed. If the current project has unsaved changes, the User will be prompted to save those changes before the project is closed. This option has a corresponding Main Menu/File option. See the How-To ð Create a New Project section for additional details.
Open Project | Opens the "Open File" dialog and allows the User to load an existing project. If there is a currently opened project it is handled as described above. This option has a corresponding Main Menu/File option. See the How-To ð Open an Existing Project section for additional details.
Close Project | Closes the current project. If the current project has unsaved changes, the User will be prompted to save those changes before the project is closed. This option has a corresponding Main Menu/File option. See the How-To ð Close a Project section for additional details.
Save Project | Saves all changes made to the current project. This option is disabled when there are no changes to save. This option has a corresponding Main Menu/File option. See the How-To ð Save a Project section for additional details.
Save Project As | Opens the 'Save File' dialog and allows the User to save a project to a new project. Any unsaved changes to the current project will NOT be saved to the current project but will be saved to the new project. The saved project then becomes the current project. This option has a corresponding Main Menu/File option. See the How-To ð Save a Project section for additional details.
Compile Resources | Compiles the current project's resource file. This option has a corresponding Main Menu/Build option. See the How-To ð Projects ð Compile a Resource section for additional details.
Compile Project | Compiles the current project. This option has a corresponding Main Menu/Build option. See the How-To ð Projects ð Compile a Project section for additional details.
Compile and Run Project | Compiles the current project and, if successful, executes the resulting exe file. This option has a corresponding Main Menu/Build option. See the How-To ð Projects ð Run a Project and How-To ð Projects ð Compile a Project sections for additional details.
Execute Project | Executes the exe file for the current project, if it exists. This option has a corresponding Main Menu/Build option. See the How-To ð Projects ð Run a Projectsection for additional details.
Start/Continue debug | Start/Continue DEBUG mode - not implemented.
Single-Step debug | Single-Step DEBUG - not implemented
Stop debug | Stop DEBUG - not implemented
Open Help | Opens this help file. This option has a corresponding Main Menu/Help option.


Main Tab Control

User Interface > Main Tab Control

This section describes the Main Tab Control area of IWB+. Other portions of the help file may refer to this section when explaining an activity.

Main Tab Control

The main tab control is used to select one of IWB+'s functional areas. Currently there are 5 tabs/modes. A tab/mode is selected by clicking on the desired tab. When selected, the tab will be highlighted.

Each tab/mode has one or more windows associated with it that are displayed in the WorkSpace. The following is a list of the tabs with a brief description of each's function:

Tab | Description
Form Editor | The heart of IWB+. In this tab all of the project's forms (windows/dialogs along with their controls) are added/edited/deleted. See the Functional Tabs ð Form Editor section for additional, specific details.
Code Editor | In this tab all of the project's source code (*.iwb and *.inc) files can be viewed/edited. See the Functional Tabs ð Code Editor section for additional, specific details.
Compiler Output | This is a read-only tab that allows the User to view the activity during the compile/link process. See the Functional Tabs ð Compiler Output section for additional, specific details.
Debug | This tab is used to view all debug output. Not implemented.
Find In File | This tab contains the search engine for IWB+. The User can perform, and view the results of, one or more searches. See the Functional Tabs ð Find in File section for additional details.


WorkSpace

User Interface > WorkSpace

The WorkSpace is all the area of the IWB+ window not consumed by the Main Menu, Main Toolbar, and Main Tab Control. The contents of the WorkSpace will change as different activities are performed and the various tabs on the Main Tab Control are selected. The details of what is displayed, and when, will be discussed in the appropriate sections.


Functional Tabs

This section covers the Functional Tabs of the Main TabControl.

· Form Editor
· Code Editor
· Compiler Output
· Find in File


Form Editor

Functional Tabs > Form Editor

The Form Editor is where all of the project's forms (windows/dialogs, along with their controls) are added/edited/deleted.

This Functional Mode is activated anytime the User clicks the Form Editor tab of the Main Tab Control, provided a project is currently open.

The Mode is also activated automatically whenever a project is first loaded, either as a new or existing project.

The following sub-sections cover various aspects of the Form Editor:

· Editor GUI
· Selecting a Form
· Adding/Deleting Forms
· Configuring a Form's Properties
· Adding/Deleting Controls
· Configuring a Control's Properties
· Positioning/Aligning Multiple Controls
· Selecting Styles
· Custom Styles
· Selecting Message Handlers
· Custom Message Handlers
· Selecting Colors
· Selecting Fonts
· Selecting Icons


Editor GUI

Functional Tabs > Form Editor > Editor GUI

The following is a screenshot of the WorkSpace when the Form Editor tab is selected. The image is divided into sections. Each section has its own area in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the name of the section.

Click on an area to go to the discussion for that section.

Form Editor - PropertiesForm Editor - StatusForm Editor - Current FormForm Editor - Controls ToolbarForm Editor - Main Toolbar Form Editor - GUI

Form Editor - Main Toolbar

The Form Editor's Main Toolbar contains one combobox and fourteen buttons.

Form Editor - Main Toolbar

The function of each is described below:

Form Editor - Form ComboBox

The combobox contains an entry for each form (window/dialog) in the current IWB+ project. See the Selecting a Form section for additional details.

Clicking on a toolbar button results in the described action:

Button | Result
New Window | Used to add a new window to the current project. See the Adding/Deleting Forms section for additional details.
New Dialog | Used to add a new dialog to the current project. See the Adding/Deleting Forms section for additional details.
Delete Form | Used to delete a form from the current project. See the Adding/Deleting Forms section for additional details.
Align Left | Used to align the left edges of multiple controls on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Align Top | Used to align the top edges of multiple controls on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Align Right | Used to align the right edges of multiple controls on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Align Bottom | Used to align the bottom edges of multiple controls on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Center Vertically | Used to vertically center one or more controls on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Center Horizontally | Used to horizontally center one or more controls on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Equal Space Horizontally | Used to equally space multiple controls horizontally on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Equal Space Vertically | Used to equally space multiple controls vertically on a form. See the Positioning/Aligning Multiple Controls section for additional details.
Equal Size Horizontally | Used to set multiple controls on a form to the same width. See the Positioning/Aligning Multiple Controls section for additional details.
Equal Space Vertically | Used to set multiple controls on a form to the same height. See the Positioning/Aligning Multiple Controls section for additional details.
Equal Size Horiz/Vert | Used to set multiple controls on a form to the same width and height. See the Positioning/Aligning Multiple Controls section for additional details.

Form Editor - Control Toolbar

Form Editor -ControlToolbar

The Form Editor's Control Toolbar contains 44 buttons.

The first 22 buttons are pre-defined for 24 built-in controls that can be add to a form.The function of each is described below.

The remaining 22 buttons are undefined. They are to be used for the User's custom, User defined controls. See the Editors/ ð Custom Control Editor section for more details.

Dragging a toolbar button results in the described action:

Button | Result
System Button | Used to add a control of type @SYSBUTTON with the CONTROL command. See the Adding/Deleting Controls section for additional details.
Regular Button | Used to add a control of type @BUTTON with the CONTROL command. See the Adding/Deleting Controls section for additional details.
Region Button | Used to add a control of type @RGNBUTTON with the CONTROL command. See the Adding/Deleting Controls section for additional details.
Static Text | Used to add a control of type @STATIC with the CONTROL command. See the Adding/Deleting Controls section for additional details.
CheckBox | Used to add a control of type @CHECKBOX with the CONTROL command. See the Adding/Deleting Controls section for additional details.
RadioButton | Used to add a control of type @RADIOBUTTON with the CONTROL command. See the Adding/Deleting Controls section for additional details.
ListBox | Used to add a control of type @LISTBOX with the CONTROL command. See the See the Adding/Deleting Controls section for additional details.
ComboBox | Used to add a control of type @COMBOBOX with the CONTROL command. See the See the Adding/Deleting Controls section for additional details.
Edit Control | Used to add a control of type @EDIT with the CONTROL command. See the See the Adding/Deleting Controls section for additional details.
RichEdit Control | Used to add a control of type @RICHEDIT with the CONTROL command. See the Adding/Deleting Controls section for additional details.
Horizontal ScrollBar | Used to add a control of type @SCROLLBAR with the horizontal style flag and the CONTROL command. See the Adding/Deleting Controls section for additional details.
Vertical ScrollBar | Used to add a control of type @SCROLLBAR with the vertical style flag and the CONTROL command. See the Adding/Deleting Controls section for additional details.
ListView | Used to add a control of type @LISTVIEW with the CONTROL command. See the Adding/Deleting Controls section for additional details.
TreeView | Used to add a control of type @TREEVIEW with the CONTROL command. See the Adding/Deleting Controls section for additional details.
GroupBox | Used to add a control of type @GROUPBOX with the CONTROL command. See the Adding/Deleting Controls section for additional details.
TabControl | Used to add a Tab Control with the TABCONTROL command. See the Adding/Deleting Controls section for additional details.
Horizontal Trackbar | Used to add a Horizontal Trackbar with the TRACKBARCONTROL command. See the Adding/Deleting Controls section for additional details.
Vertical Trackbar | Used to add a Vertical Trackbar with the TRACKBARCONTROL command. See the Adding/Deleting Controls section for additional details.
Spinner Control | Used to add a Spinner Control with the SPINNERCONTROL command. See the Adding/Deleting Controls section for additional details.
Progress Bar | Used to add a Progress Bar with the PROGRESSCONTROL command. See the Adding/Deleting Controls section for additional details.
Calendar Control | Used to add a Calendar Control with the CALENDARCONTROL command. See the Adding/Deleting Controls section for additional details.
Date/Time Picker | Used to add a Date/Time Picker with the DATETIMEPICKER command. See the Adding/Deleting Controls section for additional details.

Form Editor - Current Form

The Form Editor's Current Form is a representation of how the currently selected form will appear in the User's final application. The form shown below is of a default form before any controls, menus, or toolbars are added. Only the background color has been changed.

Form Editor - Current Form

Form Editor - Status

The Form Editor's Status indicates the left, top, width, and height parameters of the current form and/or the currently selected control. If more than one control is selected the values represent the last control selected.

Form Editor - Status

Form Editor - Properties

The Form Editor's Properties window shows the properties for the currently selected form/control. See the Configuring a Form's Properties and the Configuring a Control's Properties sections for specific details.

Form Editor - Properties

The remaining sub-sections in the Form Editor section will discuss all the various aspects of modifying a form.


Selecting a Form

Functional Tabs > Form Editor > Selecting a Form

There are three ways to select an existing form to edit or delete.

The first is done automatically each time a project is opened. Whether it is due to a new project being created (How-To>>Projects>>Create a New Project) or an existing project being re-opened (How-To>>Projects>>Open an Existing Project), IWB+ is forced into Form Editor Mode when a project is opened.

At that time, the Form Editor's Main Toolbar's combobox (shown below) will have the project's main/primary form selected and the corresponding form will be displayed.

Form Editor - Form ComboBox

The second way is also done automatically. Each time a new form (window/dialog) is added to a project (Functional Tabs>>FormEditor>>Adding/Deleting Forms) the form's name is added to the combobox and automatically selected and the corresponding form displayed.

The third and final way of selecting a form to edit/delete is to click the combobox dropdown arrow and select a form from the list. The selected form will then be displayed.

Form Editor - Form ComboBox


Adding/Deleting Forms

Functional Tabs > Form Editor > Adding/Deleting Forms

This section covers three topics: Adding a Window, Adding a Dialog, and Deleting a Form.

Adding a Window

Clicking the Add Window button on the Form Editor's Main Toolbar opens the Add New Window dialog shown below.

Form Editor - Add New Window

The dialog has three entries; two are required. One required entry is the window's ID (in this case w1). This entry must be unique for the current project. The other required entry identifies the parent for this new window. The User will always have two options.

· Make the current form the parent ("main" in the example)
· Select "0" or no parent.

The third, optional, dialog entry is the Hidden checkbox. Selecting this option will hide the window ( with the @hidden style flag ) when it is created.

The User can click Cancel to abort the operation.

If the User clicks OK several things will happen.

The new window's ID will be added to the Form Editor's Main Toolbar's combobox.

The new window's source code file is created ( See the How It Works ð Project Structure section for details ) and the filename is added to the Code Editor's Main Toolbar's combobox ( See the Functional Tabs ð Code Editor section for details).

If the User selected "0" for a parent then the new window will be automatically selected in the Form Editor's Main Toolbar's combobox and the new window will be displayed in the Form Editor.

If the User chose the displayed window as the parent then the new window will not be displayed. The parent window will remain displayed and a placeholder for the new window will be added to the parent window ( as shown below ).

Form Editor - w/Added Child Window

In this case the new window can be moved and resized inside the parent window. To do any other editing to the new child window will require the User to select the new window in the Form Editor's Main Toolbar's combobox.

Adding a Dialog

Clicking the Add Dialog button on the Form Editor's Main Toolbar opens the Add New Dialog dialog shown below.

Form Editor - Add New Dialog

The dialog requires two entries. One is the dialog's ID (in this case d1). This entry must be unique for the current project. The other entry identifies the parent for this new dialog. The User will always have two options.

· Make the current form the parent ("main" in the example)
· Select "0" or no parent.

The Hidden checkbox is always disabled for dialogs.

The User can click Cancel to abort the operation.

If the User clicks OK several things will happen.

The new dialog's ID will be added to the Form Editor's Main Toolbar's combobox.

The new dialog's source code file is created ( See the How It Works ð Project Structure section for details ) and the filename is added to the Code Editor's Main Toolbar's combobox ( See the Functional Tabs ð Code Editor section for details).

The new dialog will be automatically selected in the Form Editor's Main Toolbar's combobox and the new dialog will be displayed in the Form Editor ( as shown below ).

Form Editor - w/Added Child Dialog

Deleting a Form

Clicking the Delete Form button on the Form Editor's Main Toolbar will cause the following prompt to appear.

Form Editor - Delete Form Dialog

If the User selects Yes the form and its associated source file will be deleted. If the form is the parent to any forms then those child forms will be deleted. And if the child forms have children they will be deleted down through however many nested levels there are.

Then the 'main/primary' form will be automatically selected in the Form Editor's Main Toolbar's combobox and the 'main' form will be displayed.

If the User selects No the deletion will be aborted and the following message will appear:

Form Editor - Cancel Delete Form Dialog

NOTE: The 'main' form of a project can not be deleted. When it is selected and being displayed in the Form Editor the Delete Form button on the Form Editor's Main Toolbar will be disabled.


Configuring a Form's Properties

Functional Tabs > Form Editor > Configuring a Form's Properties

When a form is created, it is done so with a certain set of properties. Some of the initial properties are based on User defined preferences ( width, height, foreground color, background color, and font ). See the Preferences ð Basic Control Defaults section for additional information.

Other initial settings are hard coded in IWB+.

The User can change the size of the form by dragging the right and/or bottom edge of the form. The coordinates of the form will be displayed in the Status window. In the Form Editor the top and left edges of the form remain fixed. However the corresponding parameters can be changed in the Properties window and the form will be displayed at the desired location in the final application.

To change one or more of the form's other properties the User must update the Properties window ( shown below ) to show the selected form's properties. This can be accomplished by clicking anywhere on the form's background.

The User can also right click on the form's background to open the context menu and select Properties.

Form Editor - Form Context Menu

Form Editor - Form Properties

The Properties window (for forms) contains three types of entries:

· Combobox - User's are given a list of options to pick from. Identified by the down arrow to the right of the entry.
· Text - User types their entry. Identified with a white background.
· Text/Dialog - User either types their entry in the proper format or right clicks in the edit window and opens a Color, Style, Font, or File dialog via the popup menu. Identified by a tinted background.

Each of the entries are described below.

Property | Description
Caption | The text that appears in the form's Caption Bar provided the @NOCAPTION style flag has not been applied. As the text is changed it will be reflected on the form.
Style | Sets the Style flags for the form. The User has the choice of typing the proper styles in the proper format or right-clicking and selecting the Styles option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Styles section for further details.
Foreground | Sets the foreground color for the form. The User has the choice of typing in the color in the proper format ( Red, Grn, Blu ), pasting the proper code from the ColorPicker utility, or right-clicking and selecting the Color option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Colors section for further details. NOTE: Does not apply to dialogs.
Background | Sets the background color for the form. The User has the choice of typing in the color in the proper format ( Red, Grn, Blu ), pasting the proper code from the ColorPicker utility, or right-clicking and selecting the Color option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Colors section for further details. NOTE: Does not apply to dialogs.
Font | Sets the font for the form. The User has the choice of typing in the font information in the proper format ( font name, size, weight, flags ) or right-clicking and selecting the Font option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Fonts section for further details.
Browser | The User can select whether or not to attach a browser to the form. NOTE: Does not apply to dialogs.
Left | Sets the screen coordinate, in pixels, for the left side of the form. The entry will not be used if Yes is selected in the Center combobox below.
Top | Sets the screen coordinate, in pixels, for the top of the form. The entry will not be used if Yes is selected in the Center combobox below.
Width | Sets the width of the form, in pixels.
Height | Sets the height of the form, in pixels.
Center | Selecting NO will position the form based upon the Left and Top entries above. Selecting Yes will ignore those entries and position the form in middle of screen.
Menu | Contains a list of available menus, if any, in the project. Selecting a menu will apply that menu to the current form. However, the menu details will not be displayed on the form in the Form Editor. A placeholder will be shown instead to facilitate the alignment of controls. The actual menu will appear in the compiled application. NOTE: This option is not available for child windows. See the Editors ð Menu Editor section for details on adding a menu to a project.
ToolBar | Contains a list of available toolbars, if any, in the project. Selecting a toolbar will apply that toolbar to the current form. However, the toolbar details will not be displayed on the form in the Form Editor. A placeholder will be shown instead to facilitate the alignment of controls. The actual toolbar will appear in the compiled application. NOTE: Only one toolbar per form can be added in this manner. Any additional toolbars on a given form will have to be hand coded by the User. See the Editors ð Toolbar Editor section for details on adding a menu to a project.
Icon | Sets the icon for the form. The User has the choice of typing in the full path to the desired icon or right-clicking and selecting the Icons option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Icons section for details on adding an icon to a form.

The Properties window is also used by controls on the current form. It is imperative that the User select the proper desired object before editing any of the entries.


Add/Position/Delete Controls

Functional Tabs > Form Editor > Add/Position/Delete Controls

Adding and deleting controls are simple, straightforward processes.

Adding a Control

Form Editor -ControlToolbar

The User selects the desired control to be added to the current form by moving the mouse cursor over the corresponding button in the Form Editor's Control Toolbar (at left ). The User then presses and holds down the left mouse button and drags the control over the form.

The User releases the mouse button when the control is in the desired location. The point of the cursor represents the upper left corner of the control. The initial width and height of the control is based upon the current User preference. See the Preferences ð Basic Control Defaults and Preferences ð Custom Control Defaults sections for details.

Once a control is added to the form it can be selected. When a single control is selected its current coordinates and size will be displayed in the Status window.

A selected control can be resized by dragging any of its edges

Positioning a Control

A selected control can be repositioned in one of several ways.

· The control can be dragged.
· The keyboard arrow keys can be used to move the control 1 pixel at a time.
· With the CTRL key depressed the arrow keys will move the control 3 pixels at a time.
· If the Snap to Grid option has been selected then selecting a control (and any change its position) will result in alignment to the hidden grid. See Preferences ð Form Editor additional details.
· The Form Editor's Main Toolbar provides two buttons that can be used to position a single control:

The Center Vertically button will center the selected control vertically on the form.

The Center Horizontally button will center the selected control horizontally on the form.

· A control can be repositioned as a member of a group of selected controls as described in Functional Tabs ð Form Editor ð Positioning/Aligning Multiple Controls section.
· If the Show Box option has been selected all non-selected controls will be outlined in a User selected color and line style. This is to facilitate aligning controls with other controls that don't normally have borders (i.e. @STATIC and @RADIOBUTTON). See Preferences ð Form Editor for additional details.

Deleting a Control

To delete a control the User right clicks the control to be deleted and selects Delete from the popup menu ( shown below ).

Form Editor - Control Popup

The control will be immediately removed, along with any associated message handler subroutines.

However,the control is not permanently removed until the changes are saved. See the How-To ð Projects ð Save a Project section for further details.


Configuring a Control's Properties

Functional Tabs > Form Editor > Configuring a Control's Properties

When a control is created, it is done so with a certain set of properties. Some of the initial properties are based on User defined preferences ( width, height, foreground color, background color, and font ). See the Preferences ð Basic Control Defaults and Preferences ð Custom Control Defaults sections for additional information.

Other initial settings are hard coded in IWB+.

The User can change the size of a control by dragging any edge of the control. The coordinates of the form will be displayed in the Status window.

To change one or more of the control's properties the User must update the Properties window ( shown below ) to show the selected control's properties. This can be accomplished by clicking anywhere on the control.

Form Editor - Control Properties

The Properties area (for controls) contains four types of entries:

· Combobox - User's are given a list of options to pick from. Identified by the down arrow to the right of the entry.
· Text - User types their entry. Identified with a white background.
· Text/Dialog - User either types their entry in the proper format or right clicks in the edit window and opens a Color, Style, Font, or File dialog via the popup menu. Identified by a tinted background.
· Info - Non-editable.

Each of the common entries for all controls are described below.

Property | Description
Caption | The text that appears as the control's caption if it is of the type control that uses this property. As the text is changed it will be reflected on the control, if applicable.
Style | Sets the Style flags for the control. The User has the choice of typing the proper styles in the proper format or right-clicking and selecting the Styles option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Styles section for further details.
Foreground | Sets the foreground color for the control, if applicable. The User has the choice of typing in the color in the proper format ( Red, Grn, Blu ), pasting the proper code from the ColorPicker utility, or right-clicking and selecting the Color option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Colors section for further details.
Background | Sets the background color for the control, if applicable. The User has the choice of typing in the color in the proper format ( Red, Grn, Blu ), pasting the proper code from the ColorPicker utility, or right-clicking and selecting the Color option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Colors section for further details.
Font | Sets the font for the control, if applicable. The User has the choice of typing in the font information in the proper format ( font name, size, weight, flags ) or right-clicking and selecting the Font option from the popup menu. See the Functional Tabs ð Form Editor ð Selecting Fonts section for further details.
Constant ID | The ID used to identify the control in the code. IWB+ provides a suggested ID based upon the parent form, the type of control, and a sequence number. Must be project unique.

The Properties window is used by all forms/controls in the current project. It is imperative that the User select the proper desired object before editing any of the entries.


Positioning/Aligning Multiple Controls

Functional Tabs > Form Editor > Positioning/Aligning Multiple Controls

IWB+ allows the User to select multiple controls and change their positioning as a group.

Multiple controls are selected by holding the CRTL key depressed and clicking on the desired controls. The first control selected will have its drag rectangle drawn in black. All subsequent controls that are selected will have red drag rectangles. If the Show Box option has been selected all non-selected controls will be outlined in a User selected color and line style. This is to facilitate aligning controls with other controls that don't normally have borders (i.e. @STATIC and @RADIOBUTTON). See Preferences ð Form Editor for additional details.

The last control selected will have its size and position displayed in the Status window.

NOTE: From the standpoint of sizing and positioning, a child window is treated like a control while editing the parent form.

The keyboard arrow keys can be used to move all the selected controls 1 pixel at a time. If the CTRL key is held depressed the arrow keys will move the selected controls 3 pixels at a time. If the Snap to Grid option has been selected then any change position will result in alignment to the hidden grid. See Preferences ð Form Editor additional details.

The Form Editor - Main Toolbar contains eleven buttons used exclusively to position controls. These eleven buttons are divided in to 4 groups, separated by vertical separators, on the toolbar. The following discusses each group.

n The first group consist of the Align Left, Align Top, Align Right, and Align Bottom buttons. These buttons are enabled any time two or more controls are selected.
Clicking one of these buttons will align the designated edges of all the selected controls to the corresponding edge on the control that was selected first ( indicated by its black drag rectangle ).
n The second group consist of the Center Vertically and Center Horizontally buttons. These buttons are enabled any time one or more controls are selected.
Clicking one of these buttons will center the selected of controls, as a group, vertically or horizontally, respectively.
It does not center each control individually.
n The third group consist of the Equal Space Horizontally and Equal Space Vertically buttons. These buttons are enabled any time three or more controls are selected.
Clicking one of these buttons will result in the selected controls being equally spaced in the horizontal or vertical direction, respectively.

With these two buttons, the order that controls are selected is of no importance. Final positioning is based upon their size and relative locations when the button is clicked.

For the purposes of discussion, let's just consider the vertical spacing button. When the button is clicked the selected buttons are sorted internally based upon the distance from the top of the parent form's client area to the top of the selected control. Calculations are performed based upon the number of selected controls and their sizes.

In most cases this will result with the selected control closest to the top of the form and the selected control closest to bottom of the form not moving. The selected controls in between those two controls will be repositioned to provide equal spacing, accounting for variations in height of individual controls. It should be noted that if the height of a given selected control is great enough to completely span one or more other selected controls unexpected positioning may result. Gross differences in the sizes of selected controls can have the same effect.
n The last group consist of the Equal Size Vertically, Equal Size Horizontally, and Equal Size Both buttons. These buttons are enabled any time two or more controls are selected.
Clicking one of these buttons will set the size, in the indicated direction(s), of all the selected controls to the corresponding size(s) of the control that was selected first ( indicated by its black drag rectangle ).


Selecting Styles

Functional Tabs > Form Editor > Selecting Styles

The User has two choices when it comes to setting the style flags for forms and controls. The style flag entry field is part of the Properties window and is shown in the Functional Tabs ð Form Editor ð Configuring a Form's Properties and Functional Tabs ð Form Editor ð Configuring a Control's Properties sections.

The User can enter the flag information directly and not need the information in this section.
Or, the User can select the Styles option from the Style popup menu in the Properties window.

Choosing the latter will result in the Styles Management dialog opening ( shown below ).

Form Editor - Styles Management

The dialog contains two listboxes; Available Styles and Current Styles.
Between the two listboxes are buttons to move selected entries between the listboxes.

At bottom left are the Add Style and Del Style buttons, described in the Functional Tabs ð Form Editor ð Custom Styles section.
Bottom right are the standard Save and Cancel buttons.

The operation is described below.

When the User selects the Styles option from the Style popup menu in the Properties window, the following things happen.

The Styles Management dialog is opened.

The Available Styles listbox is loaded with all the appropriate styles available ( in IWB+ ) for the window, dialog, or control that is being edited.

The current style flag entry from the Properties window is parsed and each individual flag is added to the Current Styles listbox.

As each flag is added in the preceding step, the matching entry in the Available Styles is removed.

The result of the above steps appears in the screenshot above.

To add style flags to the Current Styles listbox, the User selects one or more flags from the Available Styles listbox ( using standard Windows© selection techniques ) and then clicks the Add Style button.

Form Editor - Styles Management

This screenshot shows two flags selected.

Form Editor - Styles Management

This shows the results after the two flags are added.

It must be noted that, in this example, two incompatible flags were added.

IWB+ does no error checking when flags are added. Also, IWBasic adds flags when a window, dialog, or control is created and IWB+ makes no note of those flags being set. If the User needs to override one of IWBasic's default styles then the MODIFYSTYLE command will have to be used.

To delete style flags from the Current Styles listbox, the User selects one or more flags and then clicks the Delete Style button. The result will be the opposite of what occurred above when a style was added.

Once all of the style choices are completed, the User can click Save. IWB+ constructs the appropriate style entry string and inserts it into the Style field in the Properties window and the Style Management dialog is closed.

The User can abort the style editing process at any time by clicking Cancel in the Style Management dialog. This will result in the dialog being closed and no changes being made.


Custom Styles

Functional Tabs > Form Editor > Custom Styles

Adding a Custom Style Flag

There may be times when a User finds the need to add a custom style flag to the list of available styles for windows, dialogs, or specific controls. It will always be necessary when a User is configuring a User defined custom control (covered in the How-To ð Create Custom Controls section.

Custom styles are added/deleted using the Styles Management dialog discussed in the Functional Tabs ð Form Editor ð Selecting Styles section. Also see the Functional Tabs ð Form Editor ð Configuring a Form's Properties and Functional Tabs ð Form Editor ð Configuring a Control's Properties sections for information about opening the dialog.

The Styles Management dialog for a window is shown below.

Form Editor - Styles Management

The two listboxes; Available Styles and Current Styles contain all the style entries provided by IWB+.

At bottom left are the Add Style and Del Style buttons which are used to Add/
Delete custom styles.

NOTE: Styles pre-loaded in IWB+ can not be deleted.

The operations are described below.

Clicking the Add Style button opens the Add Custom Style dialog (shown below)

Form Editor - Add Custom Styles

There are two required entries:

· The Style ID must be unique to IWBasic and all of the User's IWB+projects.
· The Flag Value must be a properly formatted IWBasic INT value. It is the User's sole responsibility for the use of a proper valid value.

The User can click Cancel to abort the addition.

The following demonstrates a set of valid entries.

Form Editor - Add Custom Style

Clicking OK results in the entry being added as indicated in the image below.

Form Editor - Styles Management

The new entry now appears in the Available Styles listbox. It is now available for use in this, and all future, User projects.

Using the procedures discussed in the Functional Tabs ð Form Editor ð Selecting Styles section, the new style is added to the Current Styles listbox . The result is shown below.

Form Editor - Styles Management

Clicking the Cancel button at this point only cancels the addition of the new style to the Current Styles listbox.

If the Cancel button is used then the new style will appear in the Available Styles listbox the next time the Styles Management dialog is opened.

Clicking the Save button at this point results in the following two events:

Form Editor - Form ComboBox

The definition of the style flag constant is added to the IWB+ project's include file (as shown above).

The form's source file will reflect the addition of the style flag (as shown below).

Form Editor - Code Sample

The example used here applies equally if adding a style to a dialog, a standard IWBasic control, or a User's custom control.

Deleting a Custom Style Flag

Deleting a custom style flag is a straightforward process. In the Available Styles listbox select the desired custom style to remove. Click the Del Style button and the style is immediately removed. There is no recovery other than to re-add the style, if needed. The Del Style button will only be enabled when a valid custom style flag is selected.

WARNING: If a custom style is used in multiple IWB+ projects and then is deleted there is a possibility that it may impact the projects other than the one that was active at the time it was deleted. That's because there will be no numeric value in the base data table. The problem will only occurred if, in the other projects, the User removes the custom style flag by accident from the Current Styles listbox and then attempts to put it back.


Selecting Message Handlers

Functional Tabs > Form Editor > Selecting Message Handlers

All windows, dialogs, and controls have events associated with them. There are literally thousands of events that occur in Windows© programs. Some of the more common events are button clicks, mouse movement, keyboard input, scrolling, closing windows, etc. All of these events send messages to default handlers for each object ( window/dialog/control ).

Most of the messages are always handled by their default handlers. There are some messages that the User needs to intercept before they reach their default handlers and substitute the User's own code. The most common example of this is the clicking of a button on the screen. It is this substitution with a User's coding in response to certain messages that make one application different from another application.

Note: The preceding is an over simplified discussion of Window's messaging system. There is plenty of documentation elsewhere to study it in detail.

In order to 'handle' one of these messages a message handler structure has to be created to contain the User's custom code. This structure is what IWB+ will automatically create for the User, thus allowing the User to focus solely on the custom code.

To this end, IWB+ needs only to know what messages the User desires to intercept ( use ) for each object. IWB+ will then create the necessary coding entries for the User. The remainder of this section describes how message handlers are added/deleted.

In order to add or remove a message handler the User has to open the Handler Management dialog. To accomplish this the User right clicks on the object ( form or control ).

Shown below are two examples of the popup menus that will appear.

This menu appears for a control before any message handler has ever been added.

Form Editor -Control Popup Menu

Click on Manage Handlers to open the Handler Management dialog. An Edit Handler option ( shown in next example below ) is added when one or more handlers have been added for the control.

This menu appears for a form.

Form Editor - Form Popup Menu

Click on Manage Handlers to open the Handler Management dialog. The menu also shows an Edit Handler option that is added when one or more handlers have been added. The User can select Edit Handler and then select a specific handler. Clicking this will automatically switch IWB+ to the Code Editor tab and open the proper source file at the indicated handler. The Edit Source option will also switch IWB+ to the Code Editor tab and open the form's associated source file.

Clicking on Manage Handlers results in the opening of the Handler Management dialog ( shown below ).

Form Editor - Handler Management

The dialog contains two listboxes; Available Messages and Installed Handlers.

The Available Messages listbox contains all the messages that have been hard coded into IWB+ and supported directly by IWBasic. Also listed are any User created custom messages (see Functional Tabs ð Form Editor ð Custom Message Handlers section for more details).

The Installed Handlers listbox contains all the handlers that have been installed in the current project for the currently selected object.

Between the two listboxes are a Add Handler button used to add selected handlers and a Delete Handler button used to delete selected handlers.

At the bottom left are the Add Msg and Del Msg buttons which are used to add/delete User defined custom messages as discussed in the Functional Tabs ð Form Editor ð Custom Message Handlers section.

At the bottom right are the Edit Handler Code and Exit buttons.

The operation is as follows:

When the User selects the Handler Management option from the popup menu, the following things happen.

· The Handler Management dialog is opened.
· The Available Messages listbox is loaded with all the appropriate messages available ( in IWB+ ) for the window, dialog, or control that is being edited.
· All the currently installed message handlers for that object are added to the Installed Handlers listbox.
· As each handler is added in the preceding step, the corresponding message entry in the Available Messages listbox is removed.

Adding a Message Handler

To add a message handler the User selects a message from the Available Messages listbox ( as shown above ) and then clicks the Add Handler button.
The Add Handler dialog ( below ) will appear.

Form Editor - Add Handler

The User is prompted for a project-unique handler name. A name is suggested based upon the message, form, and control ( if applicable ). The suggested entry can be accepted or the User can enter something else.

The User then selects OK to add the handler or Cancel to abort the process.

This screenshot shows the results after the new handler was added.

Form Editor - Handler Management

The selected message has been removed from the Available Messages listbox and the handler name has been added to the Installed Handlers list box.

If the User selects a handler name in the Installed Handlers listbox (as shown below), the Edit Handler Code button will be enabled. Clicking the Edit Handler Code button will cause IWB+ to switch to the Code Editor tab, open the appropriate source file, and highlight the selected handler.

Form Editor - Handler Management

When the handler is added, the call to the handler is also added in the form's source code's protected handlers section, as shown below.

Form Editor - Handler Declaration Code

And the actual handler subroutine is added to the source code file.

Form Editor - Handler Source Code

Deleting a Message Handler
To delete a handler, the User selects the handler from the Installed Handlers listbox and then clicks the Delete Handler button. The User is then prompted to confirm the desire to delete the handler. If the deletion is not confirmed the process is aborted. If the deletion is confirmed, the following occurs:

· The handler subroutine is deleted from the source file.
· The call to the handler will be removed from the protected handlers section of the source file.
· The handler name is removed from the Installed Handlers listbox.
· The associated message name is restored to the Available Messages listbox.

The User can end the message handler editing process at any time by closing the Handler Management dialog via the Exit button.


Custom Message Handlers

Functional Tabs > Form Editor > Custom Message Handlers

Adding a Custom Message

There may be times when a User finds the need to add a custom message to the list of available messages for windows, dialogs, or specific controls. It will always be necessary when a User is configuring a User defined custom control (covered in the How-To ð Create Custom Controls section.

Custom styles are added/deleted using the Handler Management dialog discussed in the Functional Tabs ð Form Editor ð Selecting Message Handlers section.

The Handler Management dialog for a window is shown below.

Form Editor - Handler Management

The two listboxes; Available Messages and Installed Handlers contain all the message/handler entries provided by IWB+.

At bottom left are the Add Msg and Del Msg buttons which are used to Add/Delete custom messages.

NOTE: Messages pre-loaded in IWB+ can not be deleted.

The operations are described below.

Clicking the Add Message button opens the Add Custom Style dialog (shown below)

Form Editor - Add Custom Message

There are two required entries:

· The Message ID must begin with '@' and be unique to IWBasic and all of the User's IWB+ projects.
· The Handler Subroutine Name must be unique to IWBasic and all of the User's IWB+ projects.

If the message is a standard MS Windows message then click the checkbox and enter the proper numeric value in the Message value box.

The User can click Cancel to abort the addition.

The following demonstrates a set of valid entries.

Form Editor - Add Custom Message

Clicking OK results in the entry being added as indicated in the image below.

The new entry now appears in the Available Messages listbox. It is now available for use in this, and all future, User projects.

Form Editor - Handler Management

Using the procedures discussed in the Functional Tabs ð Form Editor ð Selecting Message Handlers section, the new handler is added to the Installed Handlers listbox . The result is shown below

Form Editor - Handler Management

If the User selects a handler name in the Installed Handlers listbox (as shown above), the Edit Handler Code button will be enabled. Clicking the Edit Handler Code button will cause IWB+ to switch to the Code Editor tab, open the appropriate source file, and highlight the selected handler.

When the handler is added, the call to the handler is also added in the form's source code's protected handlers section, as shown below.

Form Editor - Handler Declaration Code

The actual handler subroutine is added to the source code file.

Form Editor - Handler Source Code

The definition of the message flag constant is added to the IWB+ project's include file (as shown below).

Form Editor - Message Definition

NOTE: The numeric value assigned to the message will be a sequential number starting at 32768 for non-MS Windows messages ; otherwise it will be the number manually entered by the User.

The example used here applies equally if adding a message to a dialog, a standard IWBasic control, or a User's custom control.

Deleting a Custom Message

Deleting a custom message is a straightforward process. In the Available Messages listbox select the desired custom message to remove. Click the Del Msg button and the message is immediately removed. There is no recovery other than to re-add the message, if needed. The Del Msg button will only be enabled when a valid custom message is selected.

WARNING: If a custom message is used in multiple IWB+ projects and then is deleted there is a possibility that it may impact the projects other than the one that was active at the time it was deleted. That's because there will be no numeric value in the base data table. The problem will only occurred if, in the other projects, the User removes the custom message by accident from the Current Messages listbox and then attempts to put it back.


Selecting Colors

Functional Tabs > Form Editor > Selecting Colors

As previously described in the Functional Tabs ð Form Editor ð Configuring a Form's Properties and Functional Tabs ð Form Editor ð Configuring a Control's Properties sections, the User has three ways to set the values for the Foreground and Background color properties in the Properties dialog.

The User can either type in the color in the proper format ( Red, Grn, Blu ), paste the proper code from the ColorPicker utility or right-click and select the Color option from the popup menu. Choosing the latter will open the standard Select Color dialog, shown below.

Form Editor - Color Picker

The User selects the desired color using one of the several means available. Once the desired color is selected the User selects the OK button.

At that time the Red, Green, Blue values are converted into a properly formatted, text string and inserted in the proper field in the Properties dialog. The Select Color dialog will close.

The User can select the Cancel button at any time to abort the process.


Selecting Fonts

Functional Tabs > Form Editor > Selecting Fonts

As previously described in the Functional Tabs ð Form Editor ð Configuring a Form's Properties and Functional Tabs ð Form Editor ð Configuring a Control's Properties sections, the User has two ways to set the values for the Foreground and Background color properties in the Properties dialog.

The User can either type in the font information in the proper format ( font name, size, weight, flags ) or right-click and select the Font option from the popup menu. Choosing the latter will open the standard Font dialog, shown below.

Form Editor - Font Selector

The User selects the desired setting for the various parameters ( excluding color ). Once the desired choices are made, the User selects the OK button.

At that time the font name, size, weight, and flag values are converted into a properly formatted, text string and inserted in the proper field in the Properties dialog. The Font dialog will close.

The User can select the Cancel button at any time to abort the process.


Selecting Icons

Functional Tabs > Form Editor > Selecting Icons

As previously described in the Functional Tabs ð Form Editor ð Configuring a Form's Properties section, the User has two ways to set the values for the Icon property in the Properties dialog.

The User can either type in the full path name of the icon file (.ico) or right-click and select the Icons option from the popup menu. Choosing the latter will open the standard File dialog.

After selecting the desired icon file the following shows the three typical entries made in the project's source files.

In the parent form's source file the following two entries are made:

Form Editor - Form Source File

The entry above loads the images, insures the proper message is defined and then sends the message.

The entry below does the necessary cleanup when the form is closed.

Form Editor - Form Source File

The following entry is made in the project's global.iwb file in order to define the handle for the icon.

Form Editor - Project Global File

NOTE: The selected icon will only appear in the final application and not while in the IWB+ application.


Code Editor

Functional Tabs > Code Editor

The Code Editor is where all of the project's source files are displayed and edited.

This Functional Mode is activated anytime the User clicks the Code Editor tab of the Main Tab Control, provided a project is currently open.

The Mode is also activated automatically whenever the User selects the Edit Handler option from one of the popup menus or dialogs while in the Form Editor.

The following sub-sections cover various aspects of the Code Editor:

· Code Editor GUI
· Opening a Source File
· Adding a Source File
· Deleting a Source File
· Importing Files
· Removing Files
· Editing Files


Editor GUI

Functional Tabs > Code Editor > Editor GUI

The following is a screenshot of the WorkSpace when the Code Editor tab is selected. The image is divided into sections. Each section has its own area in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the name of the section.

Click on an area to go to the discussion for that section.

Code Editor - SubroutinesCode Editor - Code WindowCode Editor - Main Toolbar Code Editor - GUI

Code Editor - Main Toolbar

The Code Editor's Main Toolbar contains one combobox and twelve buttons.

Code Editor - Main Toolbar

The function of each is described below:

Code Editor - SourceFile Combobox

The Source File combobox (above) contains an entry for each regular source file ( *.iwb/*.inc) in the current IWB+project, as well as any imported source files (*.o/ *.obj/ *.res/*.asm/ *.lib) . The minimum entries (automatically created) for a new project are MyMainForm.iwb, MyProject.inc, and globals.iwb. Selecting a regular source file entry will open the corresponding source file for editing. See the Functional Tabs ð Code Editor ð Editing Files section for additional information. The Functional Tabs ð Code Editor ð Importing Files section gives detailed information about what happens when an imported source file is selected.

Clicking on a toolbar button results in the described action:

Button | Result
Code Editor - Add a New, non-form, source file | Used to add a new standard source file to the current project. See the Functional Tabs ð Code Editor ð Adding a Source File for additional details.
New Dialog | Used to delete a source file from the current project. See the Functional Tabs ð Code Editor ð Deleting a Source File for additional details.
Delete Form | Used to open a standard source file. See Functional Tabs ð Code Editor ð Editing Files for additional information.
Align Left | Used to close the currently selected source file. See Functional Tabs ð Code Editor ð Editing Files for additional information.
Align Top | Used to save changes to the currently selected, non project source file.Disabled when the currently selected file is a project file. See the How-To ð Files ð Save a File section for additional details.
Align Right | Used to save the currently selected source file to a new file. See the How-To ð Files ð Save a File section for additional details.
Align Bottom | Used to delete selected text from the code editor window. Disabled when there is no text selected. See Functional Tabs ð Code Editor ð Editing Files for additional information.
Center Vertically | Used to copy selected text to the clipboard. Disabled when there is no text selected. See Functional Tabs ð Code Editor ð Editing Files for additional information.
Center Horizontally | Used to paste/insert the contents of the clipboard in place of the currently selected text or at the current caret location. Disabled when clipboard is empty. See Functional Tabs ð Code Editor ð Editing Files for additional information.
Equal Space Horizontally | Used to undo an edit. Disabled unless there is an unsaved change in the currently selected source file. See Functional Tabs ð Code Editor ð Editing Files for additional information.
Equal Space Vertically | Used to redo an edit that has been undone. Disabled unless there is a previous 'undo' action. See Functional Tabs ð Code Editor ð Editing Files for additional information.
Equal Size Horizontally | Used to print the currently selected source file.

Code Editor - Editor Window

The Code Editor's Editor Window is a Scintilla© based text editor. An example is shown below.

Code Editor - Editor Window

Each source file that is currently open is identified by the files name in a tab at the bottom of the window. IWB+ allows up to 60 files to be open at one time, memory permitting.

The configuration of the editor ( font, colors, etc) is determined by the User settings described in the Preferences>>Code Editor section.

Note: Any time a change is made in the Code Editor it is not permanent until the project is saved (for project files) or the file is save (for non-project files). See the How-To ð Projects ð Save a Project and How-To ð Files ð Save a File sections for details.

Code Editor - Project Subroutines

The Code Editor's Project Subroutine window contains an entry for each subroutine in the current project.

Code Editor - Project Subroutines

Double-clicking an entry will move the caret to the location of the subroutine in the editor and reposition the contents of the editor window so the caret is visible to the User. If the appropriate file is not currently open and/or not selected, it will be, automatically. As subroutines are added/deleted, the entries will be adjusted accordingly.


Opening a Source File

Functional Tabs > Code Editor > Opening a Source File

There are three ways to open a source file directly.

Existing source files (*.iwb, *.inc ) that are part of the current project can be opened, while in the Code Editor tab, by selecting the desired file using the Code Editor's Source File combobox (below).

Code Editor - Source File Dialog

The selected file will be loaded in a new tab in the Code Editor's Editor Window.(below)

Code Editor - Source File

The other two ways to open a source file directly require that the Code Editor tab in the Main Tab Control be currently selected.

Main Menu

The User can either select the File / Open File option from the Main Menu or click the Open a source file button in the Code Editor's Main Toolbar. Doing either one will open the standard File Open dialog and the User can select one or more *.iwb or *.inc files. Each file will be loaded under its own filename tab in the Code Editor's Editor Window. The last file loaded will be automatically selected as the current file.

If a file selected to be opened is already open that file is not re-loaded. If it was the only or last file requested to be opened it will automatically be selected as the current file. If the file is a current member of the current project it will appear as shown above, with a white background.

If a file is not a member file of the current project the background will be non white (as shown below) when the file opens. Note: The background color can be changed by the User as described in the Preferences ð Code Editor section.

Code Editor - Non-Project Source File

There are numerous ways to indirectly open a source file:

· Clicking on the Edit Handler Code button when a handler is selected in the Handler Management dialog for any form or control while the Form Editor tab is currently selected.
· Clicking on the Edit Handler option in the popup menu for a form while the Form Editor tab is currently selected.
· Clicking a subroutine name in the Code Editor's Project Subroutines window while the Code Editor tab is currently selected.
· Double-clicking a line in the Find-in File tab's Return List while the Find-in-File tab is currently selected.
· Double-clicking an error line in the Compiler Output Window while the Compiler Output tab is currently selected.

Any of the above actions will result in the following:

· Automatically switch to the Code Editor tab if that tab is not currently selected.
· Load the appropriate file, if it is not already loaded.
· Select the file's tab, if not already selected.
· Scroll, if necessary, to the appropriate position in the file so the desired line is visible.
· Highlight the appropriate line.


Adding a Source File

Functional Tabs > Code Editor > Adding a Source File

There are times when it is convenient to add one or more non-form related source files to a project in order to organize miscellaneous subroutines.

Main Menu

To accomplished this, the User selects File / New File from the Main Menu or, alternatively, clicks the Create non-form source file button on the Code Editor's Main Toolbar.

In either case the Add New Source File dialog (shown below) will open.

Note: The File / New File menu option is enabled only when the Code Editor tab is selected on the Main Tab Control.

The Add New Source File dialog will open for the User to enter a project unique file name.

Code Editor - Add New Source File Dialog

Clicking Cancel will abort the process.

Clicking OK results in:

· The source file with the specified name is created in the project folder.
· The file name is added to the Code Editor's Source File combobox and the name is automatically selected.
· The currently selected file in the Code Editor's Editor Window is de-selected and the new file is loaded in a new tab in the Editor Window and automatically selected.

The screenshot below is typical of how the new source file will appear in the Editor Window.

Code Editor - Non-Form Source File

See How-To ð Files ð Insert a File for an additional way to add a source file to a project.

Also see Functional Tabs ð Code Editor ð Importing Files for information on adding *.o, *.obj, *.res, *.asm, and *.lib files to a project.


Deleting a Source File

Functional Tabs > Code Editor > Deleting a Source File

How (and if) source files can be deleted is determined by how they are created and what type of source file they are.

For the sake of discussion, source files fall into two categories, Standard and Imported.

Standard Source Files

Standard source files are *.iwb and *.inc files.

The three standard source files that were automatically created when a project is originally created, MyMainForm.iwb, MyProject.inc, and globals.iwb, can never be deleted from within IWB+.

Standard source *.iwb files added as an integral part of adding a form to a project can only be deleted by deleting the associated form. ( See the Form Editor ð Adding-Deleting Forms section for details.)

Standard source *.iwb files added using the procedure described in the Code Editor ð Adding a Source File and How-To ð Files ð Insert File sections can be deleted by clicking the Delete non-form source file button in the Code Editor's Main Toolbar.

Standard source *.inc files that were added using the procedure outlined in the How-To ð Add Includes section can only be deleted using the procedure in that same section.

Imported Source Files

Imported source files are *.o, *.obj, *.asm, *.res and *.lib files.

To delete, the User selects the file name in the Code Editor's Source File combobox (shown below).

Code Editor - Select Imported File for Deletion

The following Delete dialog will appear.

Code Editor -Delete Imported File Dialog

Click Cancel to abort removal.

Click Yes to remove file from current project.

If the checkbox is checked the file will also be deleted from the current project's folder.

It is the User's responsibility to remove any and all calls to subs, in the removed file, from the current project.


Importing Files

Functional Tabs > Code Editor > Importing Files

Imported source files are *.o, *.obj, *.asm, *.res and *.lib files. These files types can be added to the current project at any time by selecting the Project / Insert Library/Object/Assembly Files Into Project option from IWB+'s Main Menu.

Selecting that menu option will open a standard File Open dialog where the User can select one or more files to add to the project and then click Open.

The selected files will be copied to the current project's folder. The file names will be added to the Code Editor's Source File combobox (shown below).

Code Editor - Select Imported File for Deletion


Editing Files

Functional Tabs > Code Editor > Editing Files

Any time a change is made in the Code Editor Code Window, one of two things happen:

· If the file being edited is a project file, the File / Save Project option in the Main Menu and the Save Project button in the Main Toolbar will be enabled.
· If the file being edited is a non-project file, the Save File button in the Code Editor Toolbar is enabled.

When there are multiple code files open, the User selects which file to edit, via the name tabs at the bottom of the Code Editor Code Window, and the Save File button in the Code Editor Toolbar will reflect whether or not there are any pending changes for that file, only if it is a non-project file. Tthe Save File button in the Code Editor Toolbar will always be disabled when a project file is selected.

The File / Save Project option in the Main Menu and the Save Project button in the Main Toolbar enabled when there are pending changes in any file that is a part of the project.

See the How-To ð Files ð Save a File for details about saving changes.

While in the Code Editor tab, right-clicking in the Code Editor's Editor Window will open the following popup menu:

Code Editor - Editor PopUp

The following menu options are duplicates of the indicated buttons in the Code Editor - Main Toolbar section.

· Undo, Undo
· Redo, Redo
· Cut, Cut
· Copy, Copy to Clipboard
· Paste, Paste From Clipboard

The Select All option selects all the text in the Code Editor Window.

The Find option opens the Find dialog ( shown below ).

The five remaining Find... options have the same functionally as the corresponding buttons described below in the Find dialog discussion.

Code Editor - Find Dialog

The Find dialog contains a Search Term field and six buttons.

The function of each is described below.

Each of the items are described below.

 | Description
Search Term | Shows the current term to search for. The entry is changed be either typing in a new term or, prior to opening the dialog, selecting a new text string in the Code Editor Window. If the entry is blank, all the buttons except Cancel will be disabled.
Find First | Searches for the first occurrence of the search term in the Code Editor Window. If the search is successful the text in the window will be repositioned to insure the search term is visible and the term is highlighted. If the term does not exist the User receives a message.
Find Next | Searches for the first occurrence of the search term in the Code Editor Window that is after the last found location of the term. If the search is successful the text in the window will be repositioned to insure the search term is visible and the term is highlighted. If the term does not exist the User receives a message.
Find Prev | Searches for the first occurrence of the search term in the Code Editor Window that is prior to the last found location of the term. If the search is successful the text in the window will be repositioned to insure the search term is visible and the term is highlighted. If the term does not exist the User receives a message.
Find Last | Searches for the last occurrence of the search term in the Code Editor Window. If the search is successful the text in the window will be repositioned to insure the search term is visible and the term is highlighted. If the term does not exist the User receives a message.
Find in Help | Searches for the search term in the Help files listed in IWB+'s Help menu. If the search is successful a Found Topics dialog is opened. The dialog contains a list of topics that the search term was found in. The User can then select a topic and open the appropriate help file to that topic by selecting Display. If the term does not exist the User receives a message. See Note below.
Cancel | Used to close the Find dialog.

Note: The F1 key can also be used to search the Help files while in the Code Editor. If nothing is currently selected, the function will use the last term searched for, if one exist.


Compiler OutPut

Functional Tabs > Compiler OutPut

IWB+'s Compiler Output tab is used to display all IWBasic compiler activity for the current project.

The User GUI consists of a Toolbar and a blank Output Window for text output.

The Compiler Output's Toolbar contains three buttons.

Compiler Output - Toolbar

Clicking on a toolbar button results in the described action:

Button | Result
Center Vertically | Used to copy the entire contents of the Output Window to the clipboard.
Copy one line to clipboard. | Used to copy a single line of the Output Window to the clipboard.
Equal Size Horizontally | Used to print the contents of the Output Window.

The User has the option to compile the entire current project or just the project's resource file

The User can select a compile function using any one of the following methods:

· Selecting the Build/Compile option from the Main Menu or clicking the Compile the project button on the Main Toolbar.
· Selecting the Build/Compile and Run option from the Main Menu or clicking the Compile and Run the project button on the Main Toolbar.
· Selecting the Build/Compile Resource option from the Main Menu or clicking the Compile the Resource File button on the Main Toolbar.

When the User performs one of the above, IWB+ automatically selects the Compiler Output tab of the Main Tab Control. The Output Window is opened and cleared of any previous entries.

Information is displayed in the Output Window indicating the progress of the compile/link process. A successful compilation will result in the window appearing similar to the following:

Compiler Output - Output Window

The screenshot above shows four things:

· Successful compilation of resources.
· Successful compilation of all source files.
· Successful linking of object files.
· Successful creation of executable.

Compiler Output - Output Window

The above shows a typical resource file error. Depending upon the nature of the actual error, the User has three ways to resolve the issue:

· Open IWB+'s Resource Editor, or
· Open the project's resource file ( .rc ) with a text editor of the User's choice.
· Double-click on the line that identifies the location of the error.

Doing the latter opens the resource file in the Code Editor tab (as discussed below for source file errors).

When this option is selected the changes to the resource file are save automatically when the file is closed.

NOTE: This is the only time a resource file can be opened in the Code Editor tab.

After the User resolves the issue via the selected choice the compile can be repeated.

This shows a typical source file error.

Compiler Output - Output Window

Double-clicking on the line that identifies the location of the error causes the following:

· IWB+ automatically switches to the Code Editor mode.
· The source file identified in the error message is automatically selected and loaded into the Code Editor window.
· The caret is moved to the line in error and the line is highlighted, as shown below.

Code Editor - Source File Error

After the error is resolved the User can return to the Compiler Output tab to select other errors, if applicable.

The User can repeat this process until all issues are resolved.


Find in File

Functional Tabs > Find in File

The Find-in-File utility is where the User can search for words in files anywhere on the User's computer and obtain a list of files and line number's where those words appear.

This utility is always available by clicking the Find-in-File tab of the Main Tab Control.

The Find-in-File GUI consists of three text fields, four buttons, two checkboxes and a Results listbox.

Find-in-File - GUI

Each element is described below:

 | Description
Find What | Text field containing the Search Term.
Filter | Text field containing the filter identifying what types of files to search in.
In Folder | The full path to the folder to search in.
Folder | Clicking the button will open a standard Folder Browse dialog. The folder selected by the User will appear in the In Folder text field when the dialog is closed.
Match Case | If checked, the search will look for exact case matches to the Search Term as it is entered by the User.
Look in Sub-Folders | If checked, the search will proceed through all nested sub-folders of the folder shown in the In Folder text field.
Find | Initiates the actual search. As matches are found entries are made in the Results listbox.
Clear Selected | The User can select one or more lines in the Results listbox (that are no longer needed) for deletion. Clicking this button will delete all lines that have been selected.
Clear All | Clicking this button clears ALL lines in the Result listbox.

The following shows a typical search. Notice that each match is indicated by filename, line number, and the text for that line.

Find-in-File - Search Example

Double-clicking a line indicating a match will result in the following:

· IWB+ automatically switches to the Code Editor mode.
· The source file identified in the match line is automatically selected and loaded into the Code Editor window.
· The caret is moved to the indicated line and is highlighted.

When specific match lines are no longer needed they can be selected and deleted by clicking the Clear Selected button. The following shows the above search results after some lines have been deleted.

Find-in-File - Search Example

The Find-in-File utility allows User's to execute unlimited, multiple searches without having to clear the previous search's results first. The following shows the results of an additional search without clearing the results above.

Find-in-File - Search Example

NOTE: The only way that all search results are cleared is by using the the Clear Selected or Clear All buttons, or by restarting IWB+.


Editors

This section contains information about the following Editors:

· Menu Editor
· ToolBar Editor
· Resource Editor
· Custom Control Editor
· Tool Menu Editor
· Help Menu Editor


Menu Editor

Editors > Menu Editor

The Menu Editor is a self-contained editor for creating menus for windows (top level only) and dialogs that can later be chosen for use by one or more forms in a project.

The Menu Editor is opened by selecting the Editors/Menu option from IWB+ 's Main Menu.

The following sub-sections cover various aspects of the Menu Editor:

· Menu Editor GUI
· Adding a Menu File
· Deleting a Menu File
· Copying a Menu File
· Importing a Menu File
· Editing Menu Files
· Adding MenuItems
· Editing MenuItems
· Deleting MenuItems
· Birdseye View of Menus


Menu Editor GUI

Editors > Menu Editor > Menu Editor GUI

The Menu Editor is used to create menu configuration files for use in the current project's forms. The Menu Editor is opened by selecting the Editors/Menu option from the Main Menu.

The following is a screenshot of the Menu Editor. The image is divided into sections. Each section has its own area in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the name of the section.

Click on an area to go to the discussion for that section.

Menu Editor - Entry WindowMenu Editor - TreeViewMenu Editor - Main Toolbar Menu Editor - GUI

The Menu Editor also has a Menu Preview window (below) to allow the User to see exactly how the final menu will appear in the application.

Menu Editor - Preview Window

Menu Editor - Main Toolbar

The Menu Editor's Main Toolbar contains one combobox and seven buttons.

Menu Editor - Main Toolbar

The function of each is described below:

Menu Editor - Menu File Combobox

The Menu File combobox (above) contains an entry for each menu file ( *.vdm) in the current IWB+ project. As menu files are added/deleted the combobox is updated accordingly. Selecting a menu file entry will open the menu file for editing.

Clicking on a toolbar button results in the described action:

Button | Result
Menu Editor - Add a new menu file | Used to add a new menu file to the current project. See Editors ð Menu Editor ð Adding a Menu File for additional details.
Menu Editor - Remove a menu file | Used to delete the currently selected menu file from the current project. See Editors ð Menu Editor ð Deleting a Menu File for additional details.
Menu Editor - Import a menu file | Used to import (copy) a menu file. from another project. See Editors ð Menu Editor ð Importing a Menu File for additional details.
Align Top | Used to save changes to the currently selected menu file. Disabled when there are no unsaved changes.
Align Right | Used to copy/clone the currently selected menu. Disabled when there is no menu currently selected. See Editors ð Menu Editor ð Copying a Menu File for additional information.
Menu Editor - Expand TreeView | Used to expand all the branches of the Menu Editor's TreeView.
Menu Editor - Clear TreeView | Used to delete all the entries in the currently selected menu file.

Menu Editor - TreeView

The Menu Editor's TreeView shows all the entries in the current menu file. A typical example is shown below.

Menu Editor - TreeView

Clicking on an entry will load the Entry Form ( shown below ) with the entry's data, for review/editing.

Menu Editor - Entry Form

The Menu Editor's Entry Form contains four entries and a button, discussed below.

Menu Editor - Entry Form

Item | Description
Item Text | Text that will appear in User's application menu. A single "-" will result in a separator bar in the User's menu.
Item ID | ID used to identify the menu option in the User's code. Disabled when the item is a title or separator.
Handler Name | Name of message handler routine for this item. In actual code it will be pre-pended with 'DoMnu_formname_'. Disabled when the item is a title or separator.
Disabled | Used to set menu item to disabled state on program startup. Disabled when the item is a title or separator.
Preview | Used to show/update the Preview Window. Disabled when there are no pending changes.

Adding a Menu File

To add/create a new menu file, the User clicks the Menu Editor - Add a new menu file button.

Menu Editor - Add New Menu File

The dialog at left will open for the User to enter a project unique name for the menu.

Clicking Cancel will abort the process.

Clicking Open results in:

· The menu file with the specified name is created in the project folder.
· The file name is added to the Menu File combobox ( shown above ) and the name is automatically selected.
· The current file in the Menu Editor TreeView is closed and the new, empty menu file is loaded into the Menu Editor TreeView.

The User may then begin editing the menu as described in the Editing Menu Items section.

Deleting a Menu File

To delete the currently selected menu file, the User clicks the Menu Editor - Delete a menu file button.

Menu Editor - Delete Menu File

The User is prompted to confirm the deletion.

Clicking Cancel will abort the process.

Clicking Yes will open a second confirmation prompt ( shown below ).

Menu Editor - Confirm Delete Menu File

Since the menu file will be deleted from the User's harddisk, the User is prompted again to confirm the deletion.

Clicking No will abort the process.

Clicking Yes results in:

· The menu file is deleted from the User's harddisk.
· The file name is removed from the Menu File combobox and the selection is set to blank.
· The Menu Editor TreeView is cleared.
· If the deleted menu was being used by any form, the Menu property for the form is set to 'None'.

Note: A project should always be saved after deleting a menu to prevent possible compiler errors in the future.

Copying a Menu File

To copy/clone the currently selected menu file, the User clicks the Menu Editor - Copy a menu file button.

Menu Editor - Copy Menu File

The dialog at left will open for the User to enter a project unique name for the menu.

Clicking Cancel will abort the process.

Clicking Open results in:

· The menu file with the specified name is created in the project folder.
· The contents of the current menu file is copied to the new menu file.
· The current menu file is closed.
· The new file name is added to the Menu File combobox ( shown above ) and the name is automatically selected.
· The new menu file is opened.
· The Menu Editor TreeView appears unchanged but is actually reflecting the contents of the new file.

The User may then begin editing the new menu as described in the Editing Menu Items section.

Importing a Menu File

To import an existing menu file (from another project) into the currently selected project, the User clicks the Menu Editor - Import a menu file button. A standard File Open dialog is opened for the User to select a menu file to import.

Clicking Open results in:

· The selected file is copied into the current project's folder. NOTE: IWB+ will insure the imported file name does not conflict with any existing menu files by adding a sequence number to the file name, if necessary.
· The current menu file is closed after prompting the User to save, if any changes are pending.
· The imported file name is added to the Menu File combobox and the name is automatically selected.
· The new menu file is opened.

The User may then begin editing the new menu as described in the Editing Menu Items section.


Editing Menu Files

Editors > Menu Editor > Editing Menu Files

When a menu file is created there are no entries. The Menu Editor TreeView will initially be empty. The following discussion will start with that empty TreeView.

Adding MenuItems

The User adds menuitems by right-clicking in the Menu Editor TreeView. This opens the following popup menu:

Menu Editor - Add Item Dialog

Selecting one of the three Add.. options will result in the following action:

Option | Description
Add Peer After | Adds a new menuitem to the Menu Editor TreeView immediately after the currently selected item and at the same indentation level.
Add Peer Before | Adds a new menuitem to the Menu Editor TreeView immediately before the currently selected item and at the same indentation level.
Add Child | Adds a new menuitem to the Menu Editor TreeView immediately after the currently selected item and one indentation level to the right.

Note:When adding the initial menuitem to a Menu Editor TreeView, all three Add.. options result in adding a menuitem at the top of the tree.

Example

Menu Editor - TreeView

This shows the Menu Editor TreeView after the initial entry has been added using one of the three Add.. options above. The text is automatically provided by IWB+.

Menu Editor - Entry Form

This shows the Menu Editor Entry Form with the corresponding entry information. The Item Text entry has been changed by the User. See the Editors ð Menu Editor ð Editing Menu Items section for more information.

Menu Editor - TreeView

This shows the Menu Editor TreeView with three additional entries all made using Add Peer After. The Item Text entry for each was also edited. See the Editors ð Menu Editor ð Editing Menu Items section for more information.

Menu Editor - TreeView

This shows the Menu Editor TreeView after the File entry was selected and the Add Child right-click option was selected.

Menu Editor - Entry Form

This shows the Menu Editor Entry Form with the corresponding entry information.

Menu Editor - TreeView

This shows the Menu Editor TreeView after the File entry was selected ( again ) and the Add Child right-click option was selected ( again ). Notice that the new entry is before the previous child. To have placed the new entry after the previous child the User would have selected the previous child and then selected Add Peer After. The shown location could have also been achieved by selecting the previous child entry and then selecting Add Peer Before.

Menu Editor - Entry Form

This shows the Menu Editor Entry Form with the corresponding entry information. All of the entry fields have been changed by the User. See the Editors ð Menu Editor ð Editing Menu Items section for more information.

Menu Editor - TreeView

This shows the menu nesting capability of the Menu Editor. IWB+ has no built-in limit for the number of menuitems or nesting levels. The practical limit is the screen size.

An example of what this menu would look like in the final application is shown below.

vd141

Editing MenuItems

Any menuitem can be edited at any time by clicking on the desired item in the Menu Editor TreeView. Doing so will load the selected item's data into the Entry Form.

Menu Editor - Entry Form

This shows the Menu Editor Entry Form with typical, IWB+ provided, menuitem entries.

Menu Editor - Entry Form

This shows the same selected Menu Editor TreeView item's Menu Editor Entry Form with typical, User edited, menuitem entries.

The following provides specifics about each Entry Form data field:

Item | Description
Item Text | Contains the text that will appear in the final, application menu. Entering a single dash '-' will cause a separator bar to appear in the final menu. Changes will be immediately reflected in the Menu Editor TreeView. Always enabled.
Item ID | Contains a project unique ID for the menuitem. Must be a valid IWBasic variable name. Enabled only when currently selected menuitem is a child of another item and is not a parent itself.
Handler Name | Contains the name of the handler subroutine that is executed when this menuitem is selected in the final application. Must be a valid IWBasic subroutine name. Enabled only when currently selected menuitem is a child of another item and is not a parent itself.
Disabled | When checked, causes the currently selected menuitem to be disabled when the final application is first started. Enabled only when currently selected menuitem is a child of another item and is not a parent itself.

After any edits are made they must be saved in order to become permanent.

To save the currently selected menu file, the User clicks the Menu Editor - Save a menu file button in the Menu Editor Main Toolbar.

Note: A project should always be saved after editing a menu to prevent possible compiler errors in the future. See the How-To ð Projects ð Save a Project section for more information.

Deleting MenuItems

Menu Editor - Delete Meniitem

To delete the currently selected menuitem, the User right-clicks and selects the Delete option.

Menu Editor - TreeView

The Delete option should be used carefully.

Referring to the Menu Editor TreeView at the left, assume the currently selected menuitem is new item 14, instead of the one shown.

If the User deletes this menuitem all children ( regardless of the level of nesting ) will be deleted.

See the next image for the result.

Menu Editor - TreeView

new item 14 ( and all its children ) is gone and the selection focus is automatically shifted to the deleted menuitem's parent.

Note: There are two ways the User can delete all the items in the Menu Editor TreeView:

· Select and delete each of the left most menuitems in the Menu Editor TreeView, or
· Click the Menu Editor - Clear All button in the Menu Editor Main Toolbar.

Birdseye View of Menus

In order to get a real understanding for how all this menu stuff fits together we start with the previous image as the User's complete menu, saved as test.

Form Editor - Properties Window

In the Form Editor, the User selects the form to add the menu to. The User opens the Form Editor Properties Window and selects test from the Properties' Menu combobox ( shown at left ). That action sets a sequence of events in motion.

Form Editor - WorkSpace

In the Form Editor, the placeholder ( shown at left ) for the menu is displayed to facilitate control layout.

Code Editor - Editor Window

Shown in the Code Editor, the code at left is automatically generated by IWB+ and placed in the form's source file.

Based upon information stored in the 'test.vdm' file, this code generates the actual menu.

Code Editor - Editor Window

This too is generated by IWB+.

This defines the message/event handler routines for the menuitems.

Code Editor - Editor Window

Also generated by IWB+.

This shows two of the subroutine skeletons for the message/event handler routines identified above.

User's Application Menu

And finally, the menu as it appears in the final application.


ToolBar Editor

Editors > ToolBar Editor

The ToolBar Editor is a self-contained editor for creating toolbars that can later be chosen for use by one or more forms in a project.

The ToolBar Editor is opened by selecting the Editors/ToolBar option from the Main Menu.

The following sub-sections cover various aspects of the ToolBar Editor:

· ToolBar Editor GUI
· Adding a ToolBar File
· Deleting a ToolBar File
· Copying a ToolBar File
· Importing a ToolBar File
· Editing ToolBar Files
· Adding ToolBar Buttons
· Editing ToolBar Buttons
· Deleting ToolBar Buttons
· Birdseye View of ToolBars


ToolBar Editor GUI

Editors > ToolBar Editor > ToolBar Editor GUI

The ToolBar Editor is used to create toolbar configuration files for use in the current project's forms. The ToolBar Editor is opened by selecting the Editors/ToolBar option from the Main Menu.

The following is a screenshot of the ToolBar Editor. The image is divided into sections. Each section has its own area in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the name of the section.

Click on an area to go to the discussion for that section.

Menu Editor - Entry FormToolBar Editor - TreeViewToolbBar Editor - Main Toolbar ToolBar Editor - GUI

The ToolBar Editor also has two additional windows to assists the User.

The ToolBar Preview window (below) allows the User to see exactly how the final toolbar will appear in the application.

ToolBar Editor - Preview Window

Its position is determined by the User's choice of the Position parameter in the ToolBar Editor Entry Form.

It may be automatically positioned, within the client area, horizontally at the top or bottom; or vertically along the left or right sides. It will appear in the same location in the final application.

The ToolBar Bitmap window (below) allows the User to see all the available button images in the currently selected bitmap.

ToolBar Editor - Bitmap Window

ToolBar Editor - Main Toolbar

The ToolBar Editor's Main Toolbar contains one combobox and five buttons.

ToolBar Editor - Main Toolbar

The function of each is described below:

ToolBar Editor - ToolBar File Combobox

The ToolBar File combobox (above) contains an entry for each toolbar file ( *.vdtb) in the current IWB+ project. As toolbar files are added/deleted the ToolBar File combobox is updated accordingly. Selecting a toolbar file entry will open the toolbar file for editing.

Clicking on a toolbar button results in the described action:

Button | Result
Menu Editor - Add a new menu file | Used to add a new toolbar file to the current project. See Editors ð ToolBar Editor ð Adding a ToolBar File for additional details.
Menu Editor - Remove a menu file | Used to delete the currently selected toolbar file from the current project. See Editors ð ToolBar Editor ð Deleting a ToolBar File for additional details.
Menu Editor - Import a menu file | Used to import (copy) a toolbar file. from another project. See Editors ð ToolBar Editor ð Importing a ToolBar File for additional details.
Align Top | Used to save changes to the currently selected toolbar file. Disabled when there are no unsaved changes.
Align Right | Used to copy/clone the currently selected toolbar file. Disabled when there is no toolbar currently selected. See Editors ð ToolBar Editor ð Copying a ToolBar File for additional information.

ToolBar Editor - Entry Form

The ToolBar Editor's Entry Form contains two sections, discussed below.

ToolBar Editor - Entry Form (Top Half)

The top section contains 17 toolbar parameters ( listed below ).

Parameters in this section apply to the toolbar as a whole.

Item | Description
Bitmap | Contains the full pathname of the bitmap that is used with the currently selected toolbar. The button to the right is used to open the standard File Open dialog for selecting a bitmap file.
Toolbar ID | A valid IWBasic variable name used to identify the current toolbar.
Position | Group of four radiobuttons to select along which edge of the parent form's client area the toolbar will be placed.
Use Labels | Sets optional use of text labels along with bitmaps for toolbar buttons. Selecting this option will require the Button size settings to be increased in order to see the labels.
No Align | Prevents the toolbar from being automatically positioned to the top or bottom of the parent's client area. The toolbar will remain where the User places it.
Flat | Creates transparent, flat buttons on a transparent toolbar.
From Handle | Causes the toolbar to use a handle to assign the bitmap to the toolbar as opposed to using a pathname or resource ID directly.
Transparent | Allows non-flat toolbars to be transparent.
Resource | Causes toolbar bitmap to be loaded from resource file. Resource file entry is made automatically by IWB+.
Wrapable | Enables toolbar to wrap to multiple lines when toolbar is wider that parent form.
List | Creates a toolbar with buttons that can have text to the right of the buttons. Applicable when Use Labels is selected. Default is for labels to be under bitmap.
No Resize | Prevents the parent from resizing toolbar when parent is resized.
ToolTips | Enables tooltip display when mouse moves over a toolbar button.
Button size | Sets the width and height of the toolbar's buttons.
Bitmap size | Sets the width and height of the toolbar's button bitmaps.
Update | Used to display the ToolBar Preview and ToolBar Bitmap windows if either is closed. Disabled when both windows are visible.

ToolBar Editor - Entry Form (Bottom Half)

The bottom section contains 5 button parameters ( listed below ).

Parameters in this section apply to each button individually.

Item | Description
Button ID | Valid IWBasic variable name to identify the selected button. Entering a '-' will cause a separator space to be placed between buttons.
Handler | Valid IWBasic subroutine name for handler for the selected button.
Tool Tip | Text of tooltip for selected button. Applicable when ToolTips is set.
Label | Text of label for selected button. Applicable when Use Labels is set.
Disable | Disables button on application startup.

Note: The ToolBar Preview and ToolBar Bitmap windows will not appear until a button is added and a bitmap is selected, respectively. Both windows are updated automatically when changes are made. This is separate from the actual saving of the changes.

ToolBar Editor - TreeView

The ToolBar Editor's TreeView shows all the entries in the current toolbar file. A typical example is shown below. Clicking on an entry will load the Entry Form ( lower section ) with the entry's data, for review/editing.

Adding a ToolBar File

To add/create a new toolbar file, the User clicks the Menu Editor - Add a new menu file button.

ToolBar Editor - Add New ToolBar File

The dialog at left will open for the User to enter a project unique name for the toolbar.

Clicking Cancel will abort the process.

Clicking Open results in:

· The toolbar file with the specified name is created in the project folder.
· The file name is added to the ToolBar File combobox ( shown above ) and the name is automatically selected.
· The current file in the ToolBar Editor TreeView is closed and the new, empty toolbar file is loaded into the ToolBar Editor TreeView.

The User may then begin editing the toolbar as described in the Editing ToolBar Items section.

Deleting a ToolBar File

To delete the currently selected toolbar file, the User clicks the Menu Editor - Delete a menu file button.

ToolBar Editor - Delete ToolBar File

The User is prompted to confirm the deletion.

Clicking Cancel will abort the process.

Clicking Yes will open a second confirmation prompt ( shown below ).

ToolBar Editor - Confirm Delete ToolBar File

Since the toolbar file will be deleted from the User's harddisk, the User is prompted again to confirm the deletion.

Clicking No will abort the process.

Clicking Yes results in:

· The toolbar file is deleted from the User's harddisk.
· The file name is removed from the ToolBar File combobox and the selection is set to blank.
· The ToolBar Editor TreeView is cleared.
· If the deleted toolbar was being used by any form, the ToolBar property for the form is set to 'None'.

Note: A project should always be saved after deleting a toolbar to prevent possible compiler errors in the future.

Copying a ToolBar File

To copy/clone the currently selected toolbar file, the User clicks the Menu Editor - Copy a menu file button.

ToolBar Editor - Copy ToolBar File

The dialog at left will open for the User to enter a project unique name for the toolbar.

Clicking Cancel will abort the process.

Clicking Open results in:

· The toolbar file with the specified name is created in the project folder.
· The contents of the current toolbar file is copied to the new toolbar file.
· The current toolbar file is closed.
· The new file name is added to the ToolBar File combobox ( shown above ) and the name is automatically selected.
· The new toolbar file is opened.
· The Menu Editor TreeView appears unchanged but is actually reflecting the contents of the new file.

The User may then begin editing the new toolbar as described in the Editing ToolBar Items section.

Importing a ToolBar File

To import an existing toolbar file (from another project) into the currently selected project, the User clicks the Menu Editor - Import a menu file button. A standard File Open dialog is opened for the User to select a toolbar file to import.

Clicking Open results in:

· The selected file is copied into the current project's folder. NOTE: IWB+ will insure the imported file name does not conflict with any existing toolbar files by adding a sequence number to the file name, if necessary.
· The current toolbar file is closed after prompting the User to save, if any changes are pending.
· The imported file name is added to the ToolBar File combobox and the name is automatically selected.
· The new toolbar file is opened.

The User may then begin editing the new toolbar as described in the Editing ToolBar Items section.


Editing ToolBar Files

Editors > ToolBar Editor > Editing ToolBar Files

When a ToolBar file is created there are no entries. The ToolBar Editor TreeView will initially be empty. The following discussion will start with that empty ToolBar Editor TreeView.

Adding ToolBar Buttons

The User adds buttons by right-clicking in the ToolBar Editor TreeView. This opens the following popup menu:

ToolBar Editor - Add Button Popup

Selecting one of the two Add.. options will result in the following action:

Option | Description
Add Peer After | Adds a new button to the Menu Editor TreeView immediately after the currently selected item.
Add Peer Before | Adds a new button to the Menu Editor TreeView immediately before the currently selected item.

Note:When adding the initial button to a ToolBar Editor TreeView, both Add.. options result in adding a button at the top of the tree.

Example

ToolBar Editor - TreeView

This shows the ToolBar Editor TreeView after the initial entry has been added using one of the two Add.. options above. The text is automatically provided by IWB+.

ToolBar Editor - Entry Form

This shows the ToolBar Editor Entry Form ( lower section ) with the corresponding, IWB+ provided entry information. See the Editing ToolBar Buttons section for more information.

ToolBar Editor - TreeView

This shows the ToolBar Editor TreeView with additional entries all made using Add Peer After. The Item Text entry for each was also edited. There is an entry for each of the individual button bitmaps, plus an entry for each desired separator. See the Editing ToolBar Buttons section for more information.

Editing ToolBar Buttons

Any ToolBar Button can be edited at any time by clicking on the desired item in the ToolBar Editor TreeView. Doing so will load the selected item's data into the ToolBar Editor Entry Form.

ToolBar Editor - Entry Form

This shows the ToolBar Editor Entry Form ( lower section ) with typical, IWB+ provided, toolbar button entries.

ToolBar Editor - Entry Form

This shows the same selected TreeView item's ToolBar Editor Entry Form ( lower section ) with typical, User edited, toolbar button entries.

Parameters in this section apply to each button individually.

Item | Description
Button ID | Valid IWBasic variable name to identify the selected button. Entering a '-' will cause a separator space to be placed between buttons.
Handler | Valid IWBasic subroutine name for handler for the selected button.
Tool Tip | Text of tooltip for selected button. Applicable when ToolTips is set.
Label | Text of label for selected button. Applicable when Use Labels is set.
Disable | Disables button on application startup.

After any edits are made they must be saved in order to become permanent.

To save the currently selected ToolBar file, the User clicks the ToolBar Editor - Save Button button in the ToolBar Editor - Main Toolbar.

Note: A project should always be saved after editing a ToolBar to prevent possible compiler errors in the future. See the How-To ð Projects ð Save a Project section for more information.

Deleting ToolBar Buttons

ToolBar Editor - Popup

To delete the currently selected toolbar button/separator, the User right-clicks and selects the Delete option.

Birdseye View of ToolBars

In order to get a real understanding for how all this ToolBar stuff fits together we start with the previous TreeView image as the User's complete ToolBar, saved as MyTB.

Form Editor - Properties Window

In the Form Editor, the User selects the form to add the ToolBar to. The User opens the Properties window and selects MyTB from the ToolBar combobox ( shown at left ). That action sets a sequence of events in motion.

Form Editor - WorkSpace

In the Form Editor, the placeholder ( shown at left ) for the ToolBar is displayed to facilitate control layout.

Code Editor - Editor Window

Shown in the Code Editor, the code at left is automatically generated by IWB+ and placed in the form's source file.

Based upon information stored in the 'MyTB.vdtb' file, this code generates the actual toolbar.

Code Editor - Editor Window

This defines the message/event handler routines for the toolbar buttons.

Code Editor - Editor Window

This shows two of the subroutine skeletons for the message/event handler routines identified above.

Code Editor - Editor Window

This shows the resize message handler in the parent form's main message handler routine.

Code Editor - Editor Window

This shows where the bitmap handle is cleared.

User's Application

And finally, the ToolBar as it appears in the final application.


Resource Editor

Editors > Resource Editor

The Resource Editor is a custom editor for a project's resource file. Detailed information about resources and the resource compiler can be found in the Resource Compiler Help file via the IWBasic IDE Help menu. Also, the IWBasic's User's Guide contains a section, General Programming / Using Resources, that contains additional useful information.

Each time a new IWB+ project is created a resource file ( MyProject.rc ) is created as described in the How it Works ð Project Structure section. In addition to the manifest file resource entry, it also contains a protected section described in the How it Works ð Code Generation section.

With the exception of the protected section ( used by toolbars under certain circumstances ) the User has the choice of using this editor or a separate text editor of the User's choice to modify the resource file. This section covers editing within IWB+'s Resource Editor only.

The image is divided into sections. Each section has its own area in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the name of the section.

Click on an area to go to the discussion for that section.

Menu Editor - Entry FormToolBar Editor - TreeViewToolbBar Editor - Main Toolbar Resourcer Editor - GUI

Resource Editor - Main Toolbar

The Resource Editor's Main Toolbar contains three buttons.

Resource Editor - Main Toolbar

The function of each is described below:

Clicking on a toolbar button results in the described action:

Button | Result
Save Changes | Used to save changes to the currently selected resource. Identical to the Save button in the Resource Editor's Entry Form. Disabled when there are no changes pending.
Cancel Changes | Used to cancel changes to the currently selected resource. Identical to the Cancel button in the Resource Editor's Entry Form. Disabled when there are no changes pending.
Resource Editor - Expand TreeView | Used to expand all the branches of the Resource Editor's TreeView for browsing the resources.

Resource Editor - TreeView

The Resource Editor's TreeView is used to add/delete/select project resources. The example below shows the Resource Editor's Entry Form as it appears prior to any editing since the project was created.

Resource Editor - TreeView

The root entry is the full path name to the resource file and is provided in case the User desires to edit the file with a different text editor. The TreeView contains eight branches that identify the categories of resources that can be added:

· Bitmap
· Icon
· Cursor
· Scalable Image
· Menu
· Data
· Custom
· VersionInfo

Clicking a link will take the User to the section for adding/editing that type of resource.

In the above, the Custom branch contains a resource with an ID of "1". This is the automatically generated manifest file.

Resource Editor - Entry Form

The Resource Editor's Entry Form is the same for all resource types. However, there are variations in the requirements and structure of various resource entries. To accommodate these variations the various elements of the Resource Editor's Entry Form will only be enabled when they are applicable. The following shows a blank Resource Editor Entry Form.

Resource Editor - Entry Form

The description of each element assumes it only applies, when applicable. The specific active elements for each type of resource are indicated in the section covering that type of resource.

Item | Description
Resource ID | Contains the resource's ID that will be used to retrieve the resource. When adding a resource IWB+ provides a suggested value.
Resource Type | Contains resource type text. Provided by IWB+. See Custom for exception.
File | Contains full path to resource for those that require it. Clicking button at right opens standard File Open dialog ( with proper file extension mask ) to allow User to select new source file.
Content | Text area for User input, when required. IWB+ supplies skeleton text, as applicable
Save | Enabled when User edits current Resource Editor's Entry Form's contents. Newly added, unedited resources are automatically saved when created. Clicking button saves current changes.
Cancel | Enabled when User edits current Resource Editor's Entry Form's contents. Clicking button cancels current changes.

NOTE: A specific resource can be displayed and edited at any time by clicking on it's ID in the Resource Editor's TreeView.

Adding Resources

To add a resource, the User right-clicks the desired type of resource in the Resource Editor's TreeView and selects Add from the popup menu (as shown below).

Resource Editor - TreeView

If the selected type of resource requires a filename, the standard File Open dialog ( with proper file extension mask ) opens to allow the User to select a source file. After the file is selected, the dialog is closed and the information for the new resource appears in the Resource Editor's Entry Form. The User can accept the new entry, as is, by doing nothing. The User can choose to change the ID and/or the File name and then save the changes.

If the selected type does not require a filename,IWB+ loads the Resource Editor's Entry Form with the appropriate skeleton information for that resource type. The User then edits the Content entry to reflect the desired information. Once editing is complete, the User selects the Save button.

In either case, the ID of the new resource is added to the applicable branch in the Resource Editor's TreeView.

Deleting Resources

Deleting a resource is simple and straightforward.

Resource Editor - TreeView

The User right clicks on the ID of the resource to be deleted and selects Delete from the popup menu.

The User is prompted to confirm the deletion.

Resource Editor - Delete Confirmation

Clicking OK will delete the resource entry. Once deleted it can not be recovered. It does not delete the actual source file, if applicable.

Clicking Cancel will abort the process.

Bitmaps

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after a bitmap resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Entry Form with the corresponding entry information. The User can change the suggested ID and/or the file ( *.bmp only ).

Icons

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after an icon resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Resource Editor's Entry Form with the corresponding entry information. The User can change the suggested ID and/or the file ( *.ico only ).

Cursors

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after a cursor resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Resource Editor's Entry Form with the corresponding entry information. The User can change the suggested ID and/or the file ( *.cur only ).

Scalable Images

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after a scalable image resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Resource Editor's Entry Form with the corresponding entry information. The User can change the suggested ID and/or the file ( *.bmp, *.jpg, and *.gif only ).

Menus

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after a menu resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Resource Editor's Entry Form with the corresponding entry information. The User can change the suggested ID. The User enters the desired menu configuration in the Content editor.

Data

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after a data resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Resource Editor's Entry Form with the corresponding entry information. The User can change the suggested ID. The User enters the desired data configuration in the Content editor.

Custom

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after a custom resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Resource Editor's Entry Form with the corresponding entry information. The User can change the suggested ID and/or the file ( *.* ). The User can also change the Resource Type from the suggested value.

VersionInfo

Resource Editor - TreeView

This shows a typical Resource Editor TreeView after a versioninfo resource has been added following the procedure described in Adding Resources.

Resource Editor - Entry Form

This shows the Resource Editor's Entry Form with the corresponding entry information. The User can change the suggested ID. The User edits the skeleton in the Content editor.


Custom Control Editor

Editors > Custom Control Editor

The Custom Control Editor is a self-contained editor for adding up to twenty-two custom controls to the Form Editor's Control Toolbar.

The Custom Control Editor is opened by selecting the Editors/Custom Controls option from IWB+ 's Main Menu.

The following sub-sections cover various aspects of the Menu Editor:

· Custom Control Editor GUI
· Add a Custom Control
· Delete a Custom Control
· Additional Requirements


CC Editor GUI

Custom Control Editor GUI

Editors > Custom Control Editor > CC Editor GUI

Prior to using the Custom Control Editor to add a custom control, the following conditions must be met:

· The custom control to be added must me able to be invoked with IWBasic's CONTROLEX command.
· The User must have a 16x16, 8bpp bitmap that will be used to represent the custom control in the Form Editor's Control Toolbar.

The Custom Control Editor is opened by selecting the Editors/Custom Control option from the Main Menu.

The following is a screenshot of the Custom Control Editor. The image is divided into sections. Each section has its own area in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the name of the section.

Click on an area to go to the discussion for that section.

Menu Editor - Entry WindowMenu Editor - TreeView Custom Control Editor - GUI

Custom Control Editor - TreeView

Custom Control Editor - TreeView

The Custom Control Editor's TreeView contains twenty-two permanent entries. Each one represents a placeholder for a custom control.

Disabled when there are pending changes in the Custom Control Editor's Entry Form.

Custom Control Editor - Entry Form

Custom Control Editor - Entry Form

The Custom Control Editor's Entry Form is where the specific information for each custom control is entered/edited. The User.selects a placeholder to edit by clicking an entry in the Custom Control Editor's TreeView (shown above). The currently selected placeholder is indicated in the upper right corner of the Custom Control Editor's Entry Form ( 'CC1' at left ).

The four required entries are described below.

Parameters apply to each placeholder individually.

Item | Description
Title | Text as it will appear in both the Custom Control Editor's TreeView and the Custom Control Defaults dialog (as described in the Preferences ð Custom Control Defaults section.
Class Name | The name of the class that was used to create the custom control. This is the classname the User will use to register the control. It is also used as the classname in the CONTROLEX command.
Constant Prefix | The character string that will be used to automatically create the controls ID and default caption. This must be unique for all controls.
Button Bitmap | The full path to the bitmap that will be used to identify the custom control in the Form Editor's Control Toolbar.
Save | Used to save changes to the current placeholder. Disabled when there are no pending changes.
Cancel | Used to cancel any changes made to the currently selected placeholder. Disabled when there are no pending changes.
Delete | Used to delete the selected custom control from IWB+.

Add a Custom Control

The following screenshot indicates that the following have occurred:

· The User has opened the Custom Control Editor by selecting the Editors/Custom Control option from the Main Menu.
· The User has selected an unused placeholder ( CC2 ) in the Custom Control Editor's TreeView.
· The Custom Control Editor's TreeView is disabled.
· The User has made entries in the four required fields.
· The Save and Cancel buttons are enabled.

Menu Editor - Entry WindowMenu Editor - TreeView Custom Control Editor - GUI

If the User clicks Cancel, the four entry fields will be returned to their unedited state.

In this case, the previous state was blank.

If the User clicks Save, the following occurs:

· The four entries are validated.
· The Save and Cancel buttons are disabled.
· The Custom Control Editor's TreeView is enabled.
· The Title now appears next to the placeholder in the Custom Control Editor's TreeView, indicating that the placeholder is being used.
· The required entries are made in IWB+'s *.ini files.

The result that the User sees is shown in the following screenshot.

Menu Editor - Entry WindowMenu Editor - TreeView Custom Control Editor - GUI

The User has the option to add/edit/delete other custom controls, as applicable.

Click Exit to close the Custom Control Editor.

The just added control is not useable at this point. The User must close and reopen IWB+ in order to make the new control available.

Form Editor - Control ToolBar

This shows the Form Editor's Control ToolBar after IWB+ has been restarted.

The added custom control occupies the second slot in the custom control area of the toolbar, just as it is in the second slot (CC2) above.

The custom control can now be added to a form using the procedure described in the Functional Tabs ð Form Editor ð Adding/Deleting Controls. Shown below is the custom control added to a form, in the Form Editor, in order to demonstrate one of the ways the Constant Prefix entry is used.

Form Editor

The size of of the control is the IWB+ default of 100x100. The User can change that, as well as the associated foreground/background colors and font. See Preference ð Custom Control Defaults for more information.

The image below shows the Form Editor's Property Window when the custom control is selected.

It demonstrates how the Constant Prefix entry is used in the default Caption and the default Constant ID.

In the Class property the Class Name is displayed for information purposes only.

Form Editor - Property Window

Additional Requirements

In order for the User to compile a project using a custom control the following has to occur:

· The User will have to register the class in the appropriate, non protected area of the source code
· The User will have to add any required styles via the procedure in Functional Tabs ð Form Editor ð Custom Styles.
· The User will have to add any required message handlers via the procedure in Functional Tabs ð Form Editor ð Custom Message Handlers
· Add any require include files (*.inc) via the procedure in How-To ð Add Includes .
· Add any required *.obj,*.asm, *.res, or *.lib files via the procedure in How-To ð Files ð Import a File and/or *.iwb files via the How-To ð Files ð Add a File or How-To ð Files ð Insert a File.

Delete a Custom Control

The following steps are used to delete a custom control from IWB+:

· Open the Custom Control Editor by selecting the Editors/Custom Control option from the Main Menu.
· Click on the placeholder of the desired custom control to delete in the Custom Control Editor's TreeView.
· Click the Delete button.

The following dialog will appear to confirm the deletion.

Custom Control Editor - Delete Confirmation

Click No to abort the process.

Click Yes to continue with the deletion.

Restart IWB+ to clear any remnants of the custom control.

Warning: Deleting a custom control can not be undone. Be extremely careful of deleting a custom control in case you have to return to a long dormant project to make new form changes that may involve a custom control.


Tab Control Editor

Editors > Tab Control Editor

The Tab Control Editor is a self-contained editor for creating Tab Controls that can later be chosen for use by one or more forms in a project.

The Tab Control Editor is opened by selecting the Editors/TabControl option from the Main Menu.

The following sub-sections cover various aspects of the Tab Control Editor:

· Tab Control Editor GUI
· Adding a Tab Control File
· Deleting a Tab Control File
· Copying a Tab Control File
· Importing a Tab Control File
· Editing Tab Control Files
· Adding Tab Control Tabs
· Editing Tab Control Tabs
· Deleting Tab Control Tabs
· Birdseye View of Tab Controls


Tab Control Editor GUI

The Tab Control Editor is used to create tab control configuration files for use in the current project's forms. The Tab Control Editor is opened by selecting the Editors/Tab Control option from the Main Menu.

The following is a screenshot of the Tab Control Editor. The image is divided into sections. Each section has its own area in the help file that describes the purpose and use of the section. Move the cursor over an area of the image to see the name of the section.

Click on an area to go to the discussion for that section.

Menu Editor - Entry FormToolBar Editor - TreeViewToolbBar Editor - Main Toolbar Tab Controlr Editor - GUI

The Tab Control Editor also has an additional window to assist the User.

The Tab Control Preview window (below) allows the User to see exactly how the final tab control will appear in the application.

Tab Control Editor - Preview Window

Tab Control Editor - Main Toolbar

The Tab Control Editor's Main Toolbar contains one combobox and five buttons.

Tab Control Editor - Main Toolbar

The function of each is described below:

ToolBar Editor - ToolBar File Combobox

The Tab Control File combobox (above) contains an entry for each tabcontrol file ( *.vdta) in the current IWB+ project. As tab control files are added/deleted the Tab Control File combobox is updated accordingly. Selecting a tab control file entry will open the tab control file for editing.

Clicking on a tab control button results in the described action:

Button | Result
Menu Editor - Add a new menu file | Used to add a new tab control file to the current project. See Editors ð Tab Control Editor ð Adding a Tab Control File for additional details.
Menu Editor - Remove a menu file | Used to delete the currently selected tab control file from the current project. See Editors ð Tab Control Editor ð Deleting a Tab Control File for additional details.
Menu Editor - Import a menu file | Used to import (copy) a tab control file. from another project. See Editors ð Tab Control Editor ð Importing a Tab Control File for additional details.
Align Top | Used to save changes to the currently selected tab control file. Disabled when there are no unsaved changes. Will force an automatic update of the current form in the Form Editor tab.
Align Right | Used to copy/clone the currently selected tabcontrol file. Disabled when there is no tab control currently selected. See Editors ð Tab Control Editor ð Copying a Tab Control File for additional information.

Tab Control Editor - Entry Form

The Tab Control Editor's Entry Form contains 3 tab parameters, discussed below.

Tab Control Editor - Entry Form

Typical, IWB+ generated entries for an individual tab.

Parameters apply to each tab individually.

Item | Description
Tab Text | Text as it will appear on the selected tab.
Handler | Valid IWBasic subroutine name for the handler for the selected tab.
Tips | Text of tooltip for selected tab.
Update | Used to display the Tab Control Preview window if it is closed. Disabled when the window is visible.

Tab Control Editor - TreeView

The Tab Control Editor's TreeView shows all the entries in the current tabcontrol file. A typical example is shown below.

Tab Control Editor - TreeView

Clicking on an entry will load the Tab Control Editor's Entry Form with the entry's data, for review/editing.

Adding a Tab Control File

To add/create a new tab control file, the User clicks the Tab Control Editor - Add a new Tab Control file button.

Tab Control Editor - Add New Tab Control File

The dialog at left will open for the User to enter a project unique name for the tab control file.

Clicking Cancel will abort the process.

Clicking Open results in:

· The tab control file with the specified name is created in the project folder.
· The file name is added to the Tab Control File combobox ( shown above ) and the name is automatically selected.
· The current file in the Tab Control Editor TreeView is closed and the new, empty tab control file is loaded into the Tab Control Editor TreeView.

The User may then begin editing the tab control file as described in the Editing Tab Control Tabs section.

Deleting a Tab Control File

To delete the currently selected tab control file, the User clicks the Tab Control Editor - Delete a Tab Control file button.

Tab Control Editor - Delete Tab Control File

The User is prompted to confirm the deletion.

Clicking Cancel will abort the process.

Clicking Yes will open a second confirmation prompt ( shown below ).

Tab Control Editor - Confirm Delete Tab Control File

Since the tab control file will be deleted from the User's harddisk, the User is prompted again to confirm the deletion.

Clicking No will abort the process.

Clicking Yes results in:

· The tab control file is deleted from the User's harddisk.
· The file name is removed from the Tab Control File combobox and the selection is set to blank.
· The Tab Control Editor TreeView is cleared.
· If the deleted tab control file was being used by any tab control, the Tab File property for the tab control is set to 'None'.

Note: A project should always be saved after deleting a tab control to prevent possible compiler errors in the future.

Copying a Tab Control File

To copy/clone the currently selected tabcontrol file, the User clicks the Tab Control Editor - Copy a Tab Control file button.

Tab Control Editor - Copy Tab Control File

The dialog at left will open for the User to enter a project unique name for the tab control file.

Clicking Cancel will abort the process.

Clicking Open results in:

· The tab control file with the specified name is created in the project folder.
· The contents of the current tab control file is copied to the new tab control file.
· The current tab control file is closed.
· The new file name is added to the Tab Control File combobox ( shown above ) and the name is automatically selected.
· The new tab control file is opened.
· The Tab Control Editor TreeView appears unchanged but is actually reflecting the contents of the new file.

The User may then begin editing the new tab control as described in the Editing Tab Control Tabs section.

Importing a Tab Control File

To import an existing tab control file (from another project) into the currently selected project, the User clicks the Tab Control Editor - Import a Tab Control file button. A standard File Open dialog is opened for the User to select a tab control file to import.

Clicking Open results in:

· The selected file is copied into the current project's folder. NOTE: IWB+ will insure the imported file name does not conflict with any existing tab control files by adding a sequence number to the file name, if necessary.
· The current tab control file is closed after prompting the User to save, if any changes are pending.
· The imported file name is added to the Tab Control File combobox and the name is automatically selected.
· The new tab control file is opened.

The User may then begin editing the new tab control as described in the Editing Tab Control Tabs section.


Editing Tab Control Files

Editors > Tab Control Editor > Editing Tab Control Files

When a Tab Control file is created there are no entries. The Tab Control Editor TreeView will initially be empty. The following discussion will start with that empty Tab Control Editor TreeView.

Adding Tab Control Tabs

The User adds tabs by right-clicking in the Tab Control Editor TreeView. This opens the following popup menu:

ToolBar Editor - Add Button Popup

Selecting one of the two Add.. options will result in the following action:

Option | Description
Add Peer After | Adds a new tab to the Tab Control Editor TreeView immediately after the currently selected item.
Add Peer Before | Adds a new tab to the Tab Control Editor TreeView immediately before the currently selected item.

Note:When adding the initial tab to a Tab Control Editor TreeView, both Add.. options result in adding a tab at the top of the tree.

Editing Tab Control Tabs

Any Tab Control Tab can be edited at any time by clicking on the desired item in the Tab Control Editor TreeView. Doing so will load the selected item's data into the ToolBar Editor Entry Form.

Tab Control Editor - Entry Form

This shows the Tab Control Editor Entry Form with typical, IWB+ provided, tab control tab entries.

Tab Control Editor - Entry Form

This shows the same selected TreeView item's Tab Control Editor Entry Form with typical, User edited, tab control tab entries.

After any edits are made they must be saved in order to become permanent.

To save the currently selected ToolBar file, the User clicks the ToolBar Editor - Save Button button in the Tab Control Editor - Main Toolbar.

Note: A project should always be saved after editing a Tab Control file to prevent possible compiler errors in the future. See the How-To ð Projects ð Save a Project section for more information.

Deleting Tab Control Tabs

ToolBar Editor - Popup

To delete the currently selected tab control tab, the User right-clicks and selects the Delete option.

Birdseye View of Tab Controls

In order to get a real understanding for how all this Tab Control stuff fits together we start with the previous Tab Control Editor TreeView image as the User's complete ToolBar, saved as aa.

Form Editor - Properties Window

In the Form Editor, the User selects the tab control to add the Tab Control file to. The User opens the Properties window and selects aa from the Tab File combobox ( shown at left ). That action sets a sequence of events in motion.

Form Editor - WorkSpace

In the Form Editor, the Tab Control is displayed.

Code Editor - Editor Window

Shown in the Code Editor, the code at left is automatically generated by IWB+ and placed in the form's source file.

Based upon information stored in the 'aa.vdta' file, this code generates the actual tab control.

Code Editor - Editor Window

The above defines the message/event handler routine for the tab control. The indicated notification message MUST be selected by the User.

Code Editor - Editor Window

This shows the subroutine that handles the selecting of a tab.

Code Editor - Editor Window

This shows two of the tab subroutine skeletons called by the tab control's selection handler routine identified above.

User's Application

And finally, the Tab Control as it appears in the final application.


Tools Menu Editor

Editors > Tools Menu Editor

Tools OverView

Main Menu - Tools Menu Option

IWB+ comes with four utility tools as an integral part of the application. Those four are the first four options in the Tools menu (shown at left). They are covered in detail in the Utilities section.

However, each User has the ability to add their own personal favorite tools to the Tools menu. Examples are indicated by the two menu options, at left, below the separator line.

Note: There is no internal limit on the number of tools that can be added to the Tools menu. The only limit is how many tools will fit (and be viewable) on the User's screen.

Main Menu - Editors Menu Option

The Editors / Tools Menu option allows the User to add/delete User tools to/from the Tools menu.

Adding Tools

To add a tool, the User selects the Editors / Tools Menu / Add Tool option from the Main Menu.

Tools Editor - Add Tool Dialog

The Tool Editor's Add Tool dialog contains three entries and three buttons, discussed below.

Item | Description
Config. Name | This is the unique name of the file (with '.inct' extension) that will contain this tool's information. All '*.inct' files are located in the User's My Documents/Application Data folder for IWB+.
Tool Name | This is the tool's name as it will appear in the Tools menu.
Executable | This is the full path name to the tool's executable file.
Open File | Opens a standard Open File dialog to facilitate the entry of the executable file path/name.
Add | Adds the tool.
Cancel | Aborts the addition.

Clicking the Add button:

· Validates the entries.
· Creates the *.inct file.
· Rebuilds the Tools menu so the new addition is immediately available.

Main Menu -Tools Menu Option

With the above Add Tool dialog entries as an example, the Tools menu would now appear as shown.

Deleting Tools

To delete a tool, the User selects the Editors / Tools Menu / Delete Tool option from the Main Menu.

Tool Editor - Listbox

The Tools Menu's Delete Tool dialog appears with all User added tools listed.

The User selects one or more tools to delete.

Click Cancel to abort the process.

Clicking the OK button:

· The User is prompted to confirm each deletion (shown below).
· The associated *.inct is deleted from the harddisk.
· The associated executable file is NOT deleted.
· The option is removed from the Tools menu.

Tool Menu Editor - Confirm Delete

Click Yes to continue with the deletion of this tool.

Click No to abort the deletion of this tool.

Main Menu - Tools Menu Option

Clicking Yes with the above example results in the Tools menu, as shown.


Help Menu Editor

Editors > Help Menu Editor

Help OverView

Main Menu - Help Menu

IWB+ comes with four pre-configured Help menu options as an integral part of the application. Those four are the first four options in the Help menu (shown at left). They are covered in detail in the Main Menu section.

However, each User has the ability to add other help files of their choosing to the Help menu. An example is indicated by the option, at left, below the separator line.

Note: There is no internal limit on the number of help files that can be added to the Help menu. The only limit is how many help options will fit (and be viewable) on the User's screen.

Main Menu - Editors Help Option

The Editors / Help Menu option allows the User to add/delete User selected help file options to/from the Help menu.

Adding Help Files

To add a help file, the User selects the Editors / Help Menu / Add Help option from the Main Menu.

Help Editor - Add Help Dialog

The Help Editor's Add Help dialog contains three entries and three buttons, discussed below.

Item | Description
Config. Name | This is the unique name of the file (with '.incc' extension) that will contain this help file's information. All '*.incc' files are located in the User's My Documents/Application Data folder for IWB+.
Help Name | This is the help file's name as it will appear in the Help menu.
Help File | This is the full path name to the help file. NOTE: The default is for *.chm files. However, IWB+ does allow the User to select *.pdf and EBook (*.exe) files.
Open File | Opens a standard Open File dialog to facilitate the entry of the help file path/name.
Add | Adds the help file menu option.
Cancel | Aborts the addition.

Clicking the Add button:

· Validates the entries.
· Creates the *.incc file.
· Rebuilds the Help menu so the new addition is immediately available.

Help Menu -Help Menu Option

With the above Add Help dialog entries as an example, the Help menu would now appear as shown.

Deleting Help Files

To delete a help file, the User selects the Editors / Help Menu / Delete Help option from the Main Menu.

Help Editor - Listbox

The Help Menu's Delete Help dialog appears with all User added help files listed.

The User selects one or more help files to delete.

Click Cancel to abort the process.

Clicking the OK button:

· The User is prompted to confirm each deletion (shown below).
· The associated *.incc is deleted from the harddisk.
· The associated help file is NOT deleted.
· The option is removed from the Help menu.

Help Menu Editor - Confirm Delete

Click Yes to continue with the deletion of this help file.

Click No to abort the deletion of this help file.

Main Menu - Help Menu Option

Clicking Yes with the above example results in the Help menu, as shown.


Utilities

IWB+ comes with three utility functions and one utility program for the User's convenience. They are found in the Main Menu / Tools option (shown below).

Main Menu - Tools Menu

Each is covered in its own section.

· File Cleanup
· ColorPicker
· Toolbar Paint
· MessageBox Builder

User defined tools can be added to the menu using the procedures in the Editors ð Tools Menu Editor section.


File Cleanup

Utilities > File Cleanup

When compiling/linking/debugging IWBasic applications there are intermediate files that are created. These files are no longer needed when work on the application has been completed. IWB+ has a built in function that allows the User to easily remove these files.

Main Menu - Tools Menu

To use this utility, the User selects Tools / File Cleanup option from the Main Menu.

This opens the Clean Folder dialog (shown below).

Clean File - Clean Folder dialog

Use of the dialog is straightforward:

· Select a folder to clean.
· Select one or more of the file types to remove. Select all types or deselect all types via the corresponding button.
· Click Clean to remove the selected file types from the selected folder.

Clicking Cancel closes the dialog with no further action taking place.


Color Picker

Utilities > Color Picker

There are times when the User needs to select a foreground and/or background color for a window/control. There are also times when the User needs to see the combination of colors together in order to make the proper selection.

The ColorPicker utility is designed to facilitate those decisions.

Main Menu - Tools Menu

To use this utility, the User selects Tools / ColorPicker option from the Main Menu.

This opens the Color Picker dialog (shown below).

ColorPicker - Color Picker dialog

The Color Picker dialog consist of three sections:

· A Foreground Color Control Group.
· A Background Color Control Group.
· A Preview window.

All discussed below.

Clicking Done closes the dialog.

Color Control Group

ColorPicker - Color Control Group

A Color Control Group is shown at left.

The following information applies equally to either the Foreground or Background colors.

Item

Description

Title

The name of the parameter being selected .In this application it will be either Foreground or Background.

Color Bar

Displays the current color of the parameter. Clicking on the bar will open the standard System Color dialog, allowing the User to select a color. If a color is selected in this manner the 3 associated Trackbar Clusters (below) will automatically be updated to reflect the selection.

Trackbar Clusters

Each of the three Trackbar Clusters are compose of three components:

· A small colored rectangle indicating which color component the trackbar controls (reb, green, blue).
· The actual trackbar. A standard IWBasic trackbar. See description of operation below.
· An edit window whose value tracks the setting of the trackbar. If a value is entered directly then the trackbar will be updated to reflect the change.The range of allowable values is 0-255.

RGB Button

Button text immediately reflects any change made above; in the proper IWBasic RGB format.

Clicking the button copies the buttons text to the clipboard. The User may then proceed to the Code Editor or Form Editor and paste the text at the desired point.

Hex Button

Button text immediately reflects any change made above; in the proper IWBasic Hex format.

Clicking the button copies the buttons text to the clipboard. The User may then proceed to the Code Editor or Form Editor and paste the text at the desired point.

ColorPicker - Color Preview

The Color Preview Window displays the current ColorPicker Foreground or Background colors.

Trackbar Refresher

The trackbar's position can be changed in any one of several ways:

· Dragging the pointer with the mouse.
· Clicking to the side of the pointer will inc/dec the value by 1.
· Pressing the left/right arrows keys on the keyboard while the trackbar has focus will inc/dec the value by 1.
· Entering a value directly into the edit control associated with the trackbar.

Any change in trackbar value will result in a corresponding change in its "buddy" edit control.


ToolBar Paint

Utilities > ToolBar Paint

The Toolbar Paint© utility is a 3rd party program created and copyrighted 2003 by Edgar Hanson. It is free to use and distribute per the licensing agreement in the program's Option menu. The creator chose not to create a help file and it is not within the scope of this project to create one either. It is very intuitive to use as proven by the fact that all toolbars in IWB+ and my other offerings were created with this utility.

Main Menu - Tools Menu

To use this utility, the User selects Tools / Toolbar Paint option from the Main Menu.

This opens the Toolbar Paint program (shown below).

ToolBar Paint

Toolbar bitmaps created with this utility can be selected when using the ToolBar Editor.


Messagebox Builder

Utilities > Messagebox Builder

IWB+'s Messagebox Builder utility provides a simple, quick means to create and configure MeassageBoxes.

Main Menu - Tools Menu

To use this utility, the User selects Tools / MessageBox option from the Main Menu.

This opens the MessageBox Builder dialog (shown below).

Messagebox Builder

The dialog at left contains entries/selections for a simple, multi-line messagebox.The elements of the MessageBox Builder dialog are described in the table below.

Item | Description
Win | The variable name of the messagebox's parent window.
Title | The text that will appear in the messagebox's caption.
Msg | The actual text of the message. Trailing spaces are preserved.
Button(s) | Column of mutually exclusive radiobuttons used to select which button combination will appear in the messagebox.
Icon | Column of mutually exclusive radiobuttons used to select which icon will appear in the messagebox.
Save | Automatically generates the appropriate code for the configured messagebox and saves it to the clipboard. Closes the MessageBox Builder dialog
Cancel | Closes the MessageBox Builder dialog without saving anything to the clipboard.
Preview | Displays a preview version of the configured messagebox (as shown below).

Note: All edits made during a instance of the MessageBox Builder will remain in place for the next instance. The only time all the entries will be reset is when IWB+ is restarted.

Messagebox Builder - Preview

The Preview of the messagebox configured above.

After clicking the Save button in the MessageBox Builder dialog the User opens the Code Editor and places the caret at the desired point of insertion. Any text on that line will automatically be moved down when the User pastes the code from the clipboard.

Below is the inserted code for the simple example.

Code Editor - Editor Window

Messagebox Builder

This is an example of the entries for a three button messagebox and a non-default icon.

Messagebox Builder - Preview

This is the Preview of the above configuration.

And this is the resulting code pasted into the Code Editor.

Code Editor - Editor Window


How-To

Contains numerous topics on common task.

The following are the major sub-topics:

· Set Startup Preferences
· Projects
· Files
· Set Code Editor Preferences
· Create Custom Controls
· Add Includes
· Add / Delete Help Files
· Add / Delete Tools


General

General Preferences

How-To > General

Main Menu - Preferences

To access the General Preferences, the User selects File / Preferences / General option from the Main Menu.

This opens the General Preferences dialog (shown below).

General Preferences Dialog

There are two available options:

· Open Last Project - Checking this will cause the last opened project to be automatically opened the next time IWB+ is started, regardless of whether or not it was open when IWB+ was closed.
· Open Last File - Checking this will cause the last opened file to be automatically opened the next time IWB+ is started, regardless of whether or not it was open when IWB+ was closed. NOTE: This option is disabled when Open Last Project is not checked.

Click Close to close the dialog and save the selections.


Projects

How-To > Projects

This section of the How-To covers various aspects of IWB+ projects in general.

· Create a New Project
· Set Project Options
· Open an Existing Project
· Save a Project
· Close a Project
· Compile a Project
· Run a Project
· Export a Project
· Backup a Project
· Restore a Project
· Compile a Resource


Create a New Project

How-To > Projects > Create a New Project

An IWB+ project can be created in one of two ways.

Main Menu

In the first way, the User selects File / New Project from the Main Menu or, alternatively, clicks the Create New Project button on the Main ToolBar.

In either case the Create New Project dialog (shown below) will open.

Create New Project Dialog

When creating a new project the User is required to make five choices which can not be changed once the initial project files are actually created. The required entries are covered below.

Item | Description
Project Name | The project's name can be any valid Windows folder/file name without a '.' extension. This value will be used in the name of several files with different extensions.
Project Path | The path to the parent folder where the new project folder will be created (remembering that IWB+ projects are folder based).
Project Type | The User selects whether the project's main form will be a window or a dialog. This decision will impact how controls (and their properties) are handled, among other things. The default is for a window based project.
Output File | The name of the executable file created by IWB+. The default is the Project Name with an .exe extension.
Window Variable | The name (id) for the project's main form. It can be any valid IWBasic variable name. The default is 'main'. It should be noted that it is advisable to keep the name of this form (and any other form) short since it will be pre-pended to control and menu ids as well as in the naming of handler routines.

Let's assume the User finds the default Project Path entry acceptable and enters 'MyProj' in the Project Name field.

Create New Project Dialog

If the User clicks the OK button, the folder "c:\__vd200\projects\MyProj\" would be created, the project files created in that folder, and the project opened.

Take note that each time a project is opened, the full path to the project is saved in IWB+'s .ini file. This allows the User to have the last project they were working on automatically reopen itself each time IWB+ is started (if the option is selected in Preferences ð General Preferences.

Each time the Create New Project dialog opens, it reads the path to the last project opened and strips the lowest level folder (where that project is stored) and uses the remainder as the Project Path entry.
By using this this method, the User builds a base folder which will contain all the project folders and the projects will be easy to identify since they will bear the same name as the projects themselves.

The second way to create a new project is via the Project / Save As option in the Main Menu or, alternatively, clicking the Create New Project button on the Main ToolBar. That method will be covered in the How-To ð Projects ð Save a Project section.

Note: When a new project is being created IWB+ checks to see if there is a project currently open with unsaved changes. The details are covered in the How-To ð Projects ð Save a Project section.


Set Project Options

How-To > Projects > Set Project Options

An IWB+ project's options can be created in one of two ways.

Main Menu

In the first way, the User selects Project / Options from the Main Menu.

The Modify Project Options dialog (shown below) will open.

Modify Project Options Dialog

All five entries shown at left are disabled. These can not be changed once the initial project files are actually created.

The User clicks the Advanced button and the dialog expands, as shown below.

Modify Project Options Dialog

The expanded section contains identical options for the project as found in IWBasic's IDE.

The second way to set the options for a project is click the Advanced button in the Create New Project dialog when creating a new project.


Open an Existing Project

How-To > Projects > Open an Existing Project

An existing IWB+ project can be opened in one of three ways.

Main Menu

In the first way, the User selects File / Open Project from the Main Menu or, alternatively, clicks the Open Existing Project button on the Main ToolBar.

The Open IWB+ Project dialog (a standard file open dialog) will open. The file name mask for the dialog has been set to *.vdp. The User locates the desired project and clicks the Open button.

Main Menu

In the second way, the User selects File /Recent Projects from the Main Menu and then clicks on the desired project in the popup menu. The popup menu will contain up to ten of the most recently opened projects.

In the third case the User selects the Open Last on Startup option under the Preferences / General option of the Main Menu. This will result in the last project opened by the User being automatically opened the next time IWB+ is opened.


Save a Project

How-To > Projects > Save a Project

An IWB+ project can be saved in several ways.

Main Menu

In the first way, the User selects File / Save Project from the Main Menu or, alternatively, clicks the Save Project button on the Main ToolBar.

In either case, the changes will be made permanent. The File / Save Project menu option and the Save Project button will be disabled until new changes are made to the project.

Note: See the Functional Tabs ð Code Editor ð Editing Files section for addition information about the File / Save Project menu option and the Save Project button.

Main Menu

The User always has the option of saving a copy of an existing project.

To save a copy of a project, the User selects File / Save Project As from the Main Menu.
This will open the Save Project As dialog (shown below).

Save Project As Dialog

The User selects a new project name and output folder as described in the How-To ð Projects ð Create a New Project section.

The User can abort the process by selecting the Cancel button. This will result in things returning to exactly as they were before the User selected File / Save Project As.

If the User selects the OK button, the following actions will occur:

· The new project folder is created.
· The current (old) project files are copied into the new project folder; making all necessary modifications to incorporate the name and location change.
· Any pending, unsaved changes to the current project (as indicated by the File / Save Project menu option and the Save Project button being enabled) are applied to the new project files only.
· The current project is closed without applying any unsaved changes.
· The File / Save Project menu option and the Save Project button are disabled.
· The copied/cloned project is opened and becomes the current project.

Note: If a project is closed with changes pending (other than as noted above), the User will see the following prompt:

Save Changes Dialog

If the User selects Yes the pending changes will be saved. Selecting No will result in the changes being discarded.

In either case, the File / Save Project menu option and the Save Project button will be disabled and the current project will be closed.IWB+ will then proceed with whatever activity the User had initiated.

Since closing a project also closes any open, non-project files, the User will also be prompted to save any pending changes, if they exists, for each non-project file. See the How-To ð Files ð Save a File section.

For a list of all the activities that close a project (and trigger this prompt), see the How-To ð Projects ð Close a Project section.


Close a Project

How-To > Projects > Close a Project

An IWB+ project can be closed in several ways. Performing any of the following actions will result in the current project being closed.

Selecting any of the following options in the Main Menu:

· New Project
· Open Project
· Close Project
· Save Project As
· Recent Projects
· Exit

Clicking any of the following buttons in the Main Toolbar:

· Create New Project Create a New Project
· Open a Project Open an Existing Project
· Close a Project Close a Project
· Save a Project As Save Project As

Also, closing IWB+ via the close window button - Close Window

Note: If there are unsaved changes (as indicated by the Main Menu's File / Save Project option and the Main Toolbar's Save Project button being enabled) the User will be prompted to save the changes as described in the How-To ð Project ð Save a Project section.


Compile a Project

How-To > Projects > Compile a Project

An IWB+ project can be compiled from both inside and outside of IWB+ itself.

Main Menu

To compile from inside IWB+, the User selects the Build / Compile option from the Main Menu or, alternatively, clicks the Compile button on the Main ToolBar.

In either case, the Compiler Output tab of the Main Tab Control is automatically opened and progress of the compile/link process is displayed.
For details, see the Functional Tabs ð Compiler Output section.

Run a Project

Main Menu

After a successful compilation, the project can be executed from inside IWB+ by selecting Build / Run from the Main Menu or, alternatively, clicking the Run button on the Main ToolBar.

Main Menu

The compile and run steps (above) can be combined by selecting Build / Compile and Run from the Main Menu or, alternatively, clicking the Compile and Run button on the Main ToolBar.

To compile the project outside IWB+, follow these steps:

· Close the project (save changes, if prompted to do so).
· Open the IWBasic IDE.
· Select File/Open Project from the IDE menu.
· In the Open Project dialog, navigate to the folder that contains the desired IWB+ project.
· Select and open the IWBasic project file named 'YourProjectName.ebp'.
· Follow the normal IWBasic procedures for compiling and running your application.

Note: See the Warnings section for important information.


Export a Project

How-To > Projects > Export a Project

An IWB+ project can be exported to a new destination, stripping all the 'protected section' designators in the process.

Main Menu

To export the current project the User selects the File / Export option from the Main Menu.

If no project is currently open the File / Export option is disabled.

Selecting the File / Export option opens the Export Project dialog (shown below).

Export Project Dialog

The default entry is the path to the parent folder of the last exported project.

The User can select another folder via the button at right which opens a standard Find Folder dialog.

The User can click the Cancel button to abort the operation.

If the User clicks the OK button the following actions take place:

· A child folder with the same name as the current project's name is created in the parent folder above.
· All the files in the current project's folder are copied to the destination folder.
· All the *.tmp files (and other unnecessary files) are deleted from the destination folder.
· Each of the remaining files in the destination folder that contain source code are stripped of all lines that begin with '@@.

Export Complete

When the process is complete the message at left appears.

Note: Any pending, unsaved changes in the current IWB+ project will remain unsaved. However, all those changes will be incorporated in the files in the exported files in the destination project folder.

An exported project (in the destination project folder) can not be opened inside IWB+ at any time. The original source project (inside IWB+) can continue to be used as before.

This is a portion of the original main.iwb file, in the example, before being exported:

This is the original globals.iwb file, in the example, before being exported:

Export Complete

This is a portion of the exported destination main.iwb file, in the example:

Export Complete

This is the exported destination globals.iwb file, in the example:

Export Complete

WARNING: The destination folders *.rc file will need to be edited to insure all file paths to resources are correct.


Backup a Project

How-To > Projects > Backup a Project

The User can make a backup copy of the current IWB+ project at any time.

Main Menu

To backup the current project, the User selects the File / Backup option from the Main Menu.

If no project is currently open the File / Backup option is disabled.

Selecting the File / Backup option opens the Backup Current Project dialog (shown below).

Backup Current Project Dialog

Item | Description
Backup Name | The IWB+ suggested name for the backup file. It consists of the current project's name followed by the year, month, and day in the YYYY-MM-DD format.
Backup Directory | The default entry is the path to the folder where the last backed-up project resides.

The User can select another folder via the button at right which opens a standard Find Folder dialog.

The User can click the Cancel button to abort the operation.

If the User clicks the OK button the following actions take place:

· The User's specified backup folder is created, if it does not exist.
· All the files in the current project's folder are compressed and copied to a file with the User's specified name in the destination folder.

Backup Complete

When the process is complete the message at left appears.

Notice the '-1' on the end of the file name. That is an automatically assigned sequence number assigned by IWB+. The sequence numbers start with '0'. This allows unlimited, multiple backups of the same project on the same day.

Note: Any pending, unsaved changes in the current IWB+ project will be saved in the backup copy. The current project is not affected in any way.


Restore a Project

How-To > Projects > Restore a Project

A backup of an IWB+ project can be restored at any time. Restoring a project has no impact whatsoever on the current project, if one is, in fact, open.

Main Menu

To restore a backed up project the User selects the File / Restore option from the Main Menu.

Selecting the File / Restore option opens the Restore Project dialog (shown below).

Restore Project Dialog

Item | Description
Restore Name | When the dialog is opened the entry will be blank. Using the button on the right, the User opens a standard File Open dialog with the filter set for '*.vdz'. The above example shows the dialog after the User has made a selection.
Restore Directory | The default entry is the path to the parent folder where the last restored project resides.

The User can select another folder via the button at right which opens a standard Find Folder dialog.

The User can click the Cancel button to abort the operation.

If the User clicks the OK button the following actions take place:

· The User's specified restore parent folder is created, if it does not exist.
· A child folder is created with the name of the project being restored. If a folder with that name already exist, the User will be notified and the restore operation will be aborted.
· All the files in the backed-up project file are decompressed and copied to the child folder.
· The backup file remains unchanged as a result of the process.
· The restored project may be opened by the User at a later time.

Note: Any pending, unsaved changes that were captured when the original project was saved will appear as if they had been saved when the restored project is subsequently opened.


Compile a Resource

How-To > Projects > Compile a Resource

A resource file is automatically compiled at the beginning of the project compile sequence (covered in the How-To ð Projects ð Compile a Project section). However, there may be times when it may be advantageous to compile the resource file separately to insure it is bug free. This is especially true where the resource file has many entries and the project has numerous source files.

Main Menu

To compile a projects resource file separately, the User selects the Build / Compile Resource option from the Main Menu or, alternatively, clicks the Compile Resource button on the Main ToolBar.

In either case, the Compiler Output tab of the Main Tab Control is automatically opened and progress of the compile process is displayed.
For details, see the Functional Tabs ð Compiler Output section.


Files

How-To > Files

This section of the How-To covers various aspects of IWB+ files in general.


Save a File

How-To > Files > Save a File

There are multiple aspects to saving a file. Probably the most significant aspect is whether or not a file belongs to the current project.

As has been stated in multiple place, when non-project files are opened in the Code Editor Code Window they will have a default, non-white background. This is to readily distinguish them from project files, which have a default white background.

Non-Project Files

Main Menu

To save pending changes in the currently selected, non-project file, the User selects File / Save File from the Main Menu or, alternatively, clicks the Save Project button on the Code Editor ToolBar.

In either case, the changes will be made permanent. The File / Save File menu option and the Save Project button will be disabled for the selected file until new changes are made to that same file.

Note: See the Functional Tabs ð Code Editor ð Editing Files section for addition information about the File / Save File menu option and the Save File button.

Anytime a file is closed via a method described in the How-To ð Files ð Close a File section the User will be prompted to save changes to the file, if any exists.

Project Files

Changes to project source files, regardless of whether they are currently open in the Code Editor Code Window are saved under the umbrella of saving the entire project. Changes to project files can not be saved individually like non-project files. See the How-To ð Projects ð Save a Project section for further details.

Save File As

The procedure to copy/clone a source file is the same for both project and non-project files. The User begins the process by selecting the desired file in the Code Editor Code Window by clicking the name tab for the file at the bottom of the window.

Main Menu

The User then selects File / Save File from the Main Menu or, alternatively, clicks the Save Project button on the Code Editor ToolBar.

In either case, a standard File Save dialog will open. The User selects the desired destination folder and a name for the new copy of the file.

The User clicks Cancel in the dialog to abort the process.

If the User selects the Save button in the dialog, the following actions will occur:

· The new empty file is created in the destination folder. The filename will be the name enter,if it has a file extension. If the User did not enter a file extension, an extension will be added that matches the source file.
· The contents of the file in the Code Editor Code Window are copied to the new file including any pending changes.
· The current source file is closed without applying any unsaved changes.
· The File / Save File menu option and the Save File button are disabled.
· The copied/cloned file is opened as a non-project file and becomes the currently selected file.

The overall appearance is that the displayed file simply changed names. If the source file was a project file it will appear as though it changed names and background color.


Close a File

How-To > Files > Close a File

A file opened in IWB+'s Code Editor can be closed in multiple ways. Performing any of the following actions will result in the current project being closed.

Main Menu

In the first way, the User selects File / Close File from the Main Menu or, alternatively, clicks the Close File button on the Code Editor's Main ToolBar.

The currently selected file in the Code Editor's Code Window will be closed. Details of how any pending changes are handled is covered in the How-To ð Files ð Save a File section.

Note: The File / Close File option on the Main Menu is disabled unless the Code Editor tab of the Main Tab Control is selected.

Since any open source files are all closed when a project is closed, all the following will close a source file:

Selecting any of the following options in the Main Menu:

· New Project
· Open Project
· Close Project
· Save Project As
· Recent Projects
· Exit

Clicking any of the following buttons in the Main Toolbar:

· Create New Project Create a New Project
· Open a Project Open an Existing Project
· Close a Project Close a Project
· Save a Project As Save Project As

Also, closing IWB+ via the close window button - Close Window


Insert a File

How-To > Files > Insert a File

This is another way to add a source file (*.iwb) to a project.

Main Menu

The User can open a non-project *.iwb file by either selecting the File / Open File option from the Main Menu or clicking the Open a source file button in the Code Editor's Main Toolbar.

Doing either will open the standard File Open dialog and the User can select one or more non-project *.iwb files. Each file will be loaded under its own filename tab in the Code Editor's Editor Window. The last file loaded will be automatically selected as the current file.

If the file is indeed a non-project file the background will be non white (as shown below) when the file opens.

Note: The background color can be changed by the User as described in the Preferences ð Code Editor section.

Code Editor - Non-Project Source File

When a non-project file is selected in the Code Editor the Project/Insert File into Project menu option is enabled in the Main Menu.

Clicking the Project/Insert File into Project menu option does several things:

· The file is scanned to see if it contains any protected area ('@@) markers. If so, the addition will be rejected and the User notified.
· The file is copied into the current project's folder.
· The file is reloaded as a project file (white background) and the file name is added to the Code Editor's Main Toolbar/Source File combobox.
· The project header protected area is inserted at the top of the file.
· The subroutine name (unRGBLM) is added to the Code Editor's Project Subroutines window.

The result is shown below.

Code Editor - Non-Project Source File


Code Editor Preferences

How-To > Code Editor Preferences

Main Menu - Preferences

To access the Code Editor Preferences, the User selects File / Preferences / Code Editor option from the Main Menu.

This opens the Code Editor Preferences dialog (shown below).

Code Editor Preferences Dialog

IWB+'s Code Editor Preferences Dialog is very similar to IWBasic's IDE's Editor Options Dialog. The sections of the dialog are covered below. Items unique to IWB+'s Code Editor Preferences Dialog are identified as such.

Code Editor Preferences Dialog

Clicking Select opens the standard Font dialog. The name and size of the current selection is shown.

Code Editor Preferences Dialog

These items are described below.

Item | Description
Tab width | Sets the number of character spaces wide the Tab key will move the caret in the Code Editor's Editor Window.
Text FG | Indicates the current color of all text in the Code Editor's Editor Window that is not in one of the Syntax highlighting categories shown below. Clicking the button opens the standard Color dialog where the User can pick a different color.
Proj BG | Indicates the current color of the background in the Code Editor's Editor Window for all files that are an integral part of the currently selected project. Clicking the button opens the standard Color dialog where the User can pick a different color.
NProj BG | Indicates the current color of the background in the Code Editor's Editor Window for all files that are not an integral part of the currently selected project. Clicking the button opens the standard Color dialog where the User can pick a different color. Note: There is no equivalent in the IWBasic IDE.

Code Editor Preferences Dialog

Indicates the current color of the indicated category of text in the Code Editor's Editor Window for all files. Clicking a button opens the standard Color dialog where the User can pick a different color for that category.

Code Editor Preferences Dialog

These items are described below.

Option | Description
Show line numbers | Shows line numbers on the left side of the Code Editor's Editor Window when checked. Any open files in the Code Editor when this option is changed will have to be closed and reopened for the change to appear.
Highlight Build Messages | A place holder in case I figure out what it does in IWBasic's IDE.
Enable Autocomplete | When enabled, shortcut popups will appear in the Code Editor's Editor Window when the User is typing keywords to suggest choices for what the User is intending to enter. (See warning after next section.)
Auto Indent | When checked, causes a new line in Code Editor's Editor Window to be indented to the same level as the previous line when the Enter key is pressed. Otherwise, a new line will always start at the left border of the window.

Code Editor Preferences Dialog

These options are described below.

Option | Description
As Typed | Characters are displayed as typed.
All UpperCase | All IWBasic keywords are displayed in upper case regardless of how they are entered.
All LowerCase | All IWBasic keywords are displayed in lower case regardless of how they are entered.

Note: There is no equivalent in the IWBasic IDE for the above options.

Warning: It is highly suggested that the User select the As Typed option when the User has turned on the Casesenitive option in the IWBasic compiler. Failure to heed this warning is extremely likely to result in compiler error messages that may be hard to resolve since what is displayed is not what the compiler sees. Also, if the Casesenitive option is turned on it is recommended that the Enable Autocomplete option above be selected.

Code Editor Preferences Dialog

The function of each button is described below.

Button | Description
Copy IWB | Copies all the settings from the Editor Options in the IWBasic IDE, (where a functional equivalent exists. Note: There is no equivalent in the IWBasic IDE for this button.
Save | Saves all the User's selections to IWB+'s *.ini file. The settings will remain in place until the User changes them in this, or subsequent, IWB+ sessions. The changes will immediately appear in the Code Editor's Editor Window. Closes the Code Editor Preferences dialog.
Default | Sets all the User options to the IWB+ 'as-shipped' defaults. These changes will not take effect unless they are saved via the Save button.
Cancel | Closes the Code Editor Preferences dialog, discarding any changes made during this session.


Add Includes

How-To > Add Includes

As described in the How It Works ð Project Structure section, two 'include' files (myproject.inc and globals.iwb) are automatically created when an IWB+ project is created.

vd31

This partial screenshot shows how these include files are added to a project source file. They are added to every source file in a project.

The .inc file (in this case aa.inc) can be edited to include import and extern declarations for functions needed by the user.

There are times when the User needs to add one or more additional include files to a project. This is the case when the User wants to use a third party library with a project (such as my Custom Button and Custom Chart Libraries).
The User could edit each source file individually to add the '$include' statement to each source file. This method is probably okay for small projects but becomes very inefficient for larger projects.

IWB+ offers an easier solution.

Main Menu

To add one or more include files, the User selects Project/Manage Include Files from the Main Menu.

This opens the Manage Includes dialog (shown below).

Manage Includes Dialog

The two automatically created files are shown. These entries are shown for information only and can not be removed.

To add a file the User clicks the Add button which opens the Select Include File dialog (shown below).

Select Include File Dialog

This example shows that the user has navigated to the 'IWBDev\Include' folder and has selected Sapero's windowssdk.inc file. Clicking the Open button adds the file to the include list and closes this dialog.

Manage Includes Dialog

The windowssdk.inc file can now been seen in the list of includes.

Clicking the Close button closes this dialog.

Notice above that there are no file paths in any of the entries. When an include file is added to a project, IWB+ automatically copies the file to the project folder. This insures that at some future date all the necessary files to compile the project will be present.

Code Editor Code Window

Looking again at the source file, the new include file is listed.

There are times when it may be necessary to remove an include file that the user has previously added.

Manage Includes Dialog

The user clicks on the desired file to remove. The entry will be highlighted and the Remove button will be enabled.

Clicking the Remove button will open the Delete *.inc file dialog shown below to confirm the action.

Delete *.inc File Dialog

Clicking Cancel aborts the process and closes theDelete *.inc file dialog.

Clicking Yes removes the $Include entry from all the project's source files and closes the Delete *.inc file dialog.

If the box is checked the .inc file will be deleted from the project folder.

Warning: The box should only be checked if the User is absolutely sure that all changes to the Project will be permanently saved as described in the How-To ð Projects ð Save a Project section. Failure to heed this warning can result in the project failing to compile.

When the user has finished all editing, the Manage Includes dialog is closed by clicking the Close button.


Preferences

IWB+ provides numerous preferences that the User can establish. These preference settings remain intact between sessions of IWB+. These preferences are saved in one of several *.ini files associated with IWB+ and not in the registry.

Main Menu - Preferences

To access these preferences, the User selects File / Preferences option from the Main Menu.

These preferences are grouped into six separate areas. Each grouping is covered in its own section.

· General
· Compiler
· Form Editor
· Code Editor
· Basic Control Defaults
· Custom Control Defaults


Compiler

Preferences > Compiler

Main Menu - Preferences

To access the Compiler Selection preference options, the User selects File / Preferences / Compiler option from the Main Menu.

This opens the Compiler Selection dialog (shown below).

Code Editor Preferences Dialog

IWB+'s Compiler Selection dialog contains three options that are covered below.

The Close button saves and implements the current options, as indicated, and then closes the dialog.

Option

Description

No Compiler

This is the default selection when neither of the two versions of IWBasic is currently installed. When either of the two versions is installed this option is disabled.

Pre IWBasic 2.5 Compiler

This option is enabled when IWB+ determines that this version of the compiler is installed. The path to the IWBasic compiler, if it is installed, is displayed in the associated read-only text window. This option is automatically selected if this version is the only version installed and/or identified. This option is disabled when this version of the compiler is not installed.

IWBasic 2.5 Compiler and later

This option is enabled any time the associated text window contains a valid path to a version of the compiler. A valid entry can come from the IWB+ .ini file, the User typing in a valid path to the directory where IWBasic is installed, or by the User clicking the associated button, which opens a standard Find Folder dialog, and navigating to the installation directory.

The following are valid entries:

· C:\IWBDev
· C:\IWBDev\
· C:\IWBDev\bin
· C:\IWBDev\bin\

Operation

Each time IWB+ is started the ini file is read to see if a path is stored for each of the two compilers.
In each case, if a path is found it is tested to see if it is a valid path. If it is valid the ini entry is left as-is. If the path is not found the ini entry is removed. If the pre-2.5 path is not valid the registry is checked to see if it is currently installed. If it is installed then the corresponding ini entry is updated.

If both entries are valid the 2.5 compiler is automatically selected for all compiling activities.

If only one entry, of the two, is valid then that entry is automatically selected.

If neither entry is valid then the Compiler Selection dialog,described above, is automatically opened.

Whether the Compiler Selection is opened automatically on startup or by the User the sequence of events is the same.

The ini file is read to see if a path is stored for each of the two compilers.
In each case, if a path is found it is tested to see if it is a valid path. If it is valid the ini entry is left as-is. If the path is not found the ini entry is removed. If the pre-2.5 path is not valid the registry is checked to see if it is currently installed. If it is installed then the corresponding ini entry is updated.

When neither compiler entry is valid those two options are disabled and the No Compiler option is automatically selected.

As the two compiler entries are being checked their corresponding options are enabled if the path to the compiler is valid..

If either of the two ini entries is valid the No Compiler option is disabled.

If both entries are valid the 2.5 compiler is automatically selected for all compiling activities.

If only one entry, of the two, is valid then that entry is automatically selected.

If both compilers are available the User can override the automatic selection of the 2.5 and select the pre 2.5 version. However, this will only last until IWB+ is closed. On the next startup the whole procedure begins anew.


Form Editor Preferences

Preferences > Form Editor Preferences

Main Menu - Preferences

To access the Form Preferences, the User selects File / Preferences / Form Editor option from the Main Menu.

This opens the Form Preferences dialog (shown below).

Code Editor Preferences Dialog

IWB+'s Form Preferences Dialog contains two sections that are covered below.

The Save button saves and implements the current options, as indicated, and then closes the dialog.

The Cancel button closes the dialog, discarding any changes that may have been made.

Code Editor Preferences Dialog

The Form Editor has a hidden grid that may be used to facilitate the layout of controls on a form.

These associated options are described below.

Option | Description
Snap to Grid | When checked, the selection of a control (or any movement of a control) will result in its upper left corner being aligned with the nearest grid point. The alignment point will be the nearest grid point above and left of the current location of the control's upper left corner. If the current upper left corner is already on a grid point no adjustment will be made.
Grid Spacing | Allows the User to set the default spacing of the grid points in pixels. Disabled when Snap to Grid is not checked.

Code Editor Preferences Dialog

When this option is activated every control will have its outline drawn in the desired color and style.

This facilitates the alignment of controls relative to each other when it normally has no visible border (@static, @radiobutton) or the edges of the control are hard to discern.

The functions are described below.

Button | Description
Showbox | When checked, causes an outline box to be drawn around every unselected control.
Pick Color | When the button is clicked a standard Color Picker dialog is opened allowing the User to select the desired color for the outline box. The background color of the button reflects the currently selected color.
Style 1 thru Style 5 | Allows the User to select the desired line style for the outline box. To the right of the radiobuttons are examples of the corresponding line style drawn in the currently selected color. See examples below.

Code Editor Preferences Dialog

Shows a typical form with Showbox unchecked.

Code Editor Preferences Dialog

Shows a typical form with Showbox checked and Style 1 selected.

Code Editor Preferences Dialog

Shows a typical form with Showbox checked and Style 3 selected.


Basic Control Defaults

Preferences > Basic Control Defaults

When forms/controls are initially created/added in the Form Editor they have a default size, color, and font. These defaults are initially set by IWB+ and stored in *.ini files. The User has the option of changing any/all of these defaults. These defaults are global in nature, applying to all projects. Note: Any changes made to a default values apply only to future creations/additions and have zero impact on existing forms/controls. Once forms/controls are created/added, these parameters can be changed by the User via one of the various methods described in the various Editor sections in this Help file.

Main Menu - Preferences

To edit these preferences, the User selects Tools / Basic Control Defaults option from the Main Menu.

This opens the Basic Control Defaults dialog (shown below).

Basic Control Defaults Dialog

Basic Control Defaults Dialog

The left side of the Basic Control Defaults dialog (at left) contains a list of three form types followed by twenty-two controls.

Main Window - This applies to the main form that is automatically created when a Window-based project is created. It also applies to additional forms that are created in a project using the Add new Window form button in the Form Editor's Main Toolbar AND has a parent of '0' (no parent).

Child Window -This applies to both a form and a corresponding control. The form is created with the Add new Dialog form button in the Form Editor's Main Toolbar AND has a parent. When that type of child window is created a corresponding special control is created as a place holder in the parent form.

Dialog - This applies to the main form that is automatically created when a Dialog-based project is created. It also applies to additional forms that are created in a project using the x button in the Form Editor's Main Toolbar.

The twenty-two remaining entries apply to the indicated controls when they are created by dragging the appropriate, pre-defined button from the Form Editor's Control Toolbar and dropping it onto a form in the Form Editor's Workspace.

Each of the twenty five above items has a group of five default entries (shown below).

Basic Control Defaults Dialog

The User can edit each of the five entries by entering the desired value in the proper format, as demonstrated above.

Basic Control Defaults Dialog

Select All - This places a check mark in all the checkboxes to the left of the form/control names shown above.

Un-Select All - This removes the check mark in all the checkboxes to the left of the form/control names shown above.

Close - Closes the Basic Control Defaults dialog, saving all the current values.

The other buttons are discussed below.

The following four buttons are enabled only when one, or more, form/control names (above) have a check mark.

Button | Description
Pick FG Color | Opens the standard Color dialog. The User selects the desired color and closes the Color dialog. The proper code for the selected color is automatically inserted into the FG Color edit box for every form/control that has a check mark.
Pick BG Color | Opens the standard Color dialog. The User selects the desired color and closes the Color dialog. The proper code for the selected color is automatically inserted into the BG Color edit box for every form/control that has a check mark.
Pick Font | Opens the standard Font dialog. The User selects the desired font name,size, and weight and closes the Font dialog. The proper code for the selected font parameters is automatically inserted into the Font edit box for every form/control that has a check mark.
Reset | Copies all five IWB+ default values for every form/control that has a check mark from the *.ini file defaults corresponding to each of the checked types.

Note: There are some items that, although the User can change the desired default parameter, IWBasic or Windows will override that selection. The best example of that is the background color of a Dialog.


Custom Control Defaults

Preferences > Custom Control Defaults

IWB+ provides the User with the ability to add twenty-two custom controls to the Form Editor's Control Toolbar. These User defined controls are created/configured via the Editors ð Custom Control Editor. Once the custom control is configured, the User needs to set the desired default values.

Main Menu - Preferences

To edit these preferences, the User selects Tools / User Control Defaults option from the Main Menu.

This opens the Custom Control Defaults dialog (shown below).

Custom Control Defaults Dialog

At this point, the User should read the Preferences / Basic Control Defaults section for all the operational / functional details of how everything works. The one exception is the left column of the Custom Control Defaults dialog, discussed below.

Custom Control Defaults Dialog

The left side of the Custom Control Defaults dialog (at left) contains a list of twenty-two controls.

The names shown are placeholders indicating the custom control has not been created/configured in the Editors ð Custom Control Editor. When it has been configured the placeholder name will change to whatever name the User has given the new custom control. If a custom control is later deleted the placeholder name will return.

Until a custom control has been configured and given a name the entry line here, for the five parameters, is disabled. So, the image at left and the one above indicates no custom controls have been configured. Therefore, everything is disabled.

Again, once one or more custom controls have been configured, this dialog will function exactly like the Basic Control Defaults Dialog for the configured controls.


To-Do List

For the convenience of the User, each project has a text file available to enter tasks that need to be accomplished for the current project.

Main Menu

To view/edit the 'To-Do' list, the User selects Project / 'To-Do' List from the Main Menu.

This opens the Project ToDo List dialog (shown below).

Manage Includes Dialog

The Project ToDo List is a simple multi-line edit control loaded from a text file.

Clicking Save saves the current contents.

Clicking Print prints out the current contents.

Clicking Cancel prompts the User to confirm the discarding of all changes this session.

Save and Cancel both close the Project ToDo List dialog.


Limitations

This version of IWB+ has the following limitations:

· MDI applications are not supported.
· Incompatible STYLE combinations are not addressed.
· Max of 60 source files open at one time in Code Editor.


Warnings

This section contains warnings, that if not heeded, will most likely result in the corruption of project files up to and including the point where a project is totally unusable.

· Never edit the code in a protected section of any file.
· Do not open a project in IWB+ and the IWBasic IDE at the same time. There is no synchronization between the two so the User is almost assured of trashing the source code.
· Never add/delete source files to/from an IWB+ project while it is opened in the IWBasic IDE, if you ever intend on reopening the project in IWB+.


Acknowledgments

I wish to acknowledge the following:

First and foremost, master programmer Sapero for his expert help in resolving numerous issues that arose during the building of this application.

The original author of EBasic for showing me a technique for building a visual designer.

Larry Sikes for keeping the forums and IWBasic alive.

License for Scintilla and SciTE
Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
All Rights Reserved

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation.

NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.

7-Zip Copyright (C) 1999-2011 Igor Pavlov.

See http://www.7-zip.org/ for details.

And my wife, Paula, for tolerating me during the ~18 months I've worked on this project.


Disclaimer / License / Copyright

License:

By installing this product, you are agreeing to be bound by the terms of this document. This Agreement constitutes the complete agreement between you and T. L. McCaughn, the AUTHOR of this software program. If you do not agree to the terms of this Agreement, do not complete this installation.

1. License Grant: In consideration of payment of the license fee, which is part of the price you paid for this product, T. L. McCaughn, AUTHOR, grants to you, USER, a non-exclusive right to use this copy of the software program IWB+. You may use this product on a single computer. For your convenience, you may install the licensed copy of the product on other computers for your exclusive use or that of immediate family members who live in the same household as the USER, provided that no two of those computers shall ever operate the software at the same time.

The AUTHOR reserves all rights not expressly granted to the USER.

2. Ownership: As the USER, you own the magnetic or other physical media on which the software program is originally or subsequently recorded or fixed, but the AUTHOR retains the title to and ownership in the software program recorded on the original disk copy and all subsequent copies of the program, regardless of the form or media in or on which the original and other copies may exist. This license is not a sale of the original software program or any portion or copy of it.

3. Copy Restrictions: The software programs and the accompanying materials are copyrighted and contain proprietary information and trade secrets. Unauthorized copying of the software programs or of the written materials is expressly forbidden. You may be held legally responsible for any infringement of the AUTHOR's intellectual property rights that is caused or encouraged by your failure to abide by the terms of this Agreement. In addition to licensed installations as described above, you may make one (1) copy of the software programs installation files solely for backup purposes, provided that the copyright notice is reproduced in its entirety on the backup copy.

4. Permitted Uses: This software program is licensed to you, the USER, and may not be transferred to any third party for any length of time without the prior written consent of the AUTHOR. You may not modify, adapt, translate, reverse engineer, decompile, disassemble, or sale the software programs. Written materials provided to you may not be modified, adapted, translated, or used to create derivative works without the prior written consent of the AUTHOR. The USER is granted a royality-free license to use IWB+ to create their own application and distribute that application freely. However, no portion of any of the component files of IWB+ may be distributed with the USER's application.

5. Termination: This Agreement is effective until terminated. This Agreement will terminate without notice from the AUTHOR if you fail to comply with any provision contained herein. Upon termination, you shall destroy the written materials, and all original and backup copies of the software programs, in part, and in whole.

6. Registration: The AUTHOR may from time to time update the software programs. Updates can be made available to you only if your license has been registered with the AUTHOR.

7. Retail Distribution: Ionic Wind Software is hereby granted a license to sale and distribute the Software, either directly or indirectly via third-party sales agents, provided this entire license agreement and warranty disclaimer are included with any distribution. Ownership of the software will remain with the AUTHOR.

8. Miscellaneous: This Agreement is governed by the laws of Texas.

Disclaimer and Limited Warranty:

This warranty gives you specific legal rights. You may have other rights, which vary from state to state.

THESE SOFTWARE PRODUCTS, REFERENCE MATERIAL, AND OTHER DOCUMENTATION ARE PROVIDED AS IS. T. L. McCAUGHN, AS LICENSOR, MAKES NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, WITH RESPECT TO THE USE OF THIS LICENSED MATERIAL, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR WARRANTIES ARISING FROM USAGE OF TRADE OR COURSE OF DEALING.

T. L. McCAUGHN SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, OR INCIDENTAL DAMAGES (INCLUDING DAMAGES FROM LOSS OF BUSINESS INFORMATION, AND THE LIKE) ARISING OUT OF THE USE OF OR INABILITY TO USE THESE PRODUCTS, EVEN IF T. L. McCAUGHN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.

Copyright:

Copyright © 2011 T. L. McCaughn. All Rights Reserved.


Revision History

Date

Version

Remarks

2014-12-23

1.09

Fixed

· When initializing the location of help files it was being erroneously reported that IWBasic was not installed when it was.

2014-04-08

1.08

Fixed

· Import function code was missing from both Toolbar Editor and Tab Editor.
· Preview button was flickering in both Toolbar Editor and Tab Editor.
· Toolbar Editor and Tab Editor were not recognizing associated files for loading combobox, in certain circumstances.
· Automatically generated code for Tool bar button properties was being truncated.

2013-10-04

1.07

Fixed

· Code Folding, in the Code Editor window, was not working properly.

2013-10-02

1.06

Fixed

· When using "Project Save-As", one or more source file names were sometimes corrupted.

2013-09-24

1.05

Fixed

· When deleting a non-form source file IWB+ would crash

2013-09-21

1.04

Fixed

· 'PC' version of installer was placing TBPaint tool in wrong location.
· The interaction of the CTRL key with the arrow keys was incorrect.

2013-09-06

1.03

Fixed

· Added code to support Auto Indent in the Code Editor
· Added code to support Auto Complete in the Code Editor
· Backup/Restore Executables missing from installer
· No warning message that above were missing.

Add Feature:

· Added Snap to Grid functionality to Form Editor.
· Added Alignment Aide functionality to Form Editor.
· Added Preferences/Form Editor section to help file to describe new features.
· Added ability to use with IWB 2.5 and above.

2011-07-12

1.02

Fixed:

· Edits made in TabControl Editor are not reflected in current form until project is reloaded.

2011-07-11

1.01

Fixed:

· Edit fields in ToolBar/Tab Control Editors lose focus during editing

2011-07-05

1.00

Initial Release

2011-07-03

0.03

Fixed:

· User defined styles were not being automatically defined and undefined properly.

2011-06-30

0.02

Fixed:

· The Advance section of New Project and Modify Project Options dialogs was not always visible on the screen.
· The Properties window in the Form Editor was clipped on smaller screens.
· Menu Editor crashed when trying to pass illegal argument.
· UCASE$ used improperly in several locations.
· Correct misleading warning when canceling edits in Project To-Do List dialog.
· When creating dialog based project, CLOSEDIALOG command was not generated in uppercase.
· Entry fields in Resource Editor missing @CTEDITAUTOH flag
· Several automatically created keywords not created in uppercase.
· Event Handler definitions missing for four button events.
· Entering caption and other values in Property window causes characters to be skipped if entered too fast.
· Project name appears twice in caption when creating new project.

Add Feature:

· Added ability to insert *.res files into project.
· Added ability to copy single line from Compiler Output tab to clipboard.

2011-06-27

0.01

Beta Release for testing