Grigory Filatov

Contributed works of Grigory Filatov

Adaptation FiveWin TsBrowse class
Color Table
Center Window’s Title
Closes application when no activity
Copy Protection (Get BIOS Name)

Get list of all controls

GIF animation demo

Danny A. del Pilar

Contributed works of Danny A. del Pilar

Browse Test Demo

Easter Sunday Calculation

Generate Gregorian Calendar

HMG source code converter

How to build menu like old ACHOICE function?

KPI (Key Performance Indicator) Dashboard

Return value from modal window (Record Picker) 


What Is a Window ?

In computing, a window ( aka form ) is an enclosed, rectangular area on a display screen. Most modern operating systems and applications have graphical user interfaces ( GUIs ) that let divide display into several windows. Within each window, may run a different program or display different data.

Windows are particularly valuable in multitasking environments , which allow to execute several programs at once. By dividing display into windows, may seen the output from all the programs at the same time. To enter input into a program, you simply click on the desired window to make it the foreground process.


GUI enable to set the dimensions and position of each window by moving the mouse and clicking appropriate buttons. Windows can be arranged so that they do not overlap (tiled windows) or so they do overlap (overlaid windows). Overlaid windows (also called cascading windows) resemble a stack of pieces of paper lying on top of one another; only the topmost window is displayed in full. You can move a window to the top of the stack by positioning the pointer in the portion of the window that is visible and clicking the mouse buttons. This is known as popping. You can expand a window to fill the entire screen by selecting the window’s zoom box.

In addition to moving windows, changing their size, popping and zooming them, you can also replace an entire window with an icon (this is sometimes called minimizing). An icon is a small picture that represents the program running in the window. By converting a window into an icon, you can free up space on the display screen without erasing the window entirely. It is always possible to reconvert the icon into a window whenever you want.



  MSG() Displays up to a 9 line message in a window



  Displays in a popup box up to 9 lines of a message

  Then waits for a keypress or optionally a time-out.
  First parameter can be a number equaling a time-out value in

   MSG("An error has been detected",;
       "...don't move!")



  Message is centered on screen in a box
  Once message is displayed, waits for keypress and
  then removes window, restoring screen underneath.
  Or waits for time-out value.






  FILEREAD() Lists a text file of unlimited size



  Lists text file [cFileName] of unlimited size in a
  programmer definable window of dimensions [nTop..nRight]

  Allows up down right left scrolling. Use this for
  reports or output sent to a disk file.

  If [cFileName]  is not passed, a box asks for the
  filespec and then allows a picklist of files of that spec. If
  [cFileName] is passed as a wildcard (i.e. "*.DOC"). a picklist
  of files of that spec is presented.

  If [nTop..nRight] are not passed, a default window of
  dimensions 2,2,22,78 is used.

  [cTitle] is an optional title. This overrides the
  default which is the file name.

  [lSearch] is a switch to allow text searches. Default
  is True

  [lMark] is a switch to allow block marking (with Copy
  to File or Print) Default is True.

   REPORT FORM summary TO summary.txt
   FILEREAD(2,2,22,78,"SUMMARY.TXT","Summary File")

  Fileread() will use SET DEFAULT if no path is



HMG Samples

About HMG Samples

Language Related


Array Arithmetic

Load / Save ANY array


DOS -> Windows Character Conversion

National Issues

National Alternate Collating Sequence

National Change Case


Tracking Mouse



Quick Search    

Combo box

Dynamic ComboBox

Edit Box

Word wrap in EditBox


Get Data Into Grid via IDE

Text Box

Auto fill in text box

Search in and Fill Box (SFilBox) 


Tree Menu

Two Methods for Tree


 Drives, Directories and Files

Drives and Directories

Directory List

Fill Directory List

PutFile() with default file name


HMG Message Functions

Message for multiple values

Message Extended

Where Is It ?

Improvements in Message functions


Is application running ?

Get Process ID

Simple Error Handling


Cuckoo Clock

Untouchable window

Warn Lazy User

Pegs Game


Play Draw

Draw Border


 Text Mode

Using printer under Windows 

Obsolete ways

Send to File

Print File

GUI Mode

HMG Print

 HMG Print ( Mini Print ) for beginners in 10 easy steps

Print a plain text file by HMG Print – 1

HMG Report




HMG Unicode


Color Codes

DB Validate 

Hex View

Mini Agenda

DBA : Data Base Assistant

Low-Level DBU

x-Base Modul List

Mini Search Machine (2014) 

Un-Touchable Window

#include ""
   nWindWidth := 500
   nWindHeight := 400
   nUnMWinCol := ( GetDesktopWidth() - nWindWidth ) / 2
   nUnMWinRow := ( GetDesktopHeight() - nWindHeight ) / 2
   DEFINE WINDOW frmUnTouchable ;
      AT 0,0 ;
      WIDTH nWindWidth ;
      HEIGHT nWindHeight ;
      TITle "UnTouchable Window" ;
      ON KEY ESCAPE ACTION thisWindow.Release 
      DEFINE TIMER Timer_1 INTERVAL 1000 ACTION DontTouchMyWindow()
   ACTIVATE WINDOW frmUnTouchable
RETURN // UTW.Main()
PROCEDURE DontTouchMyWindow()
   thisWindow.Row := nUnMWinRow 
   thisWindow.Col := nUnMWinCol 
   thisWindow.HEIGHT := nWindHeight
   thisWindow.WIDTH := nWindWidth
RETURN // DontTouchMyWindow()

User Interface Terms

Background Color :

The color that appears behind displayed text of another color (the foreground color).

See Also: Foreground Color

Column :

A numeric value that represents a position on the display screen or on the printed page.

Console Input/Output :

A style of operation of the keyboard and display that emulates a simple typewriter-like interface. Console input echoes each key typed and provides processing for the backspace and return keys. Console output wraps to the next line when the output reaches the right edge of the visible display, and scrolls the display when the output reaches the bottom of the visible display.

See Also: Full-screen Input/Output

Cursor :

An onscreen indicator used to show the current keyboard input focus and is displayed as a block or underline character. The cursor moves in response to characters or control keys typed by the user.

Enhanced Color :

The color used to display GETs or PROMPTs (if INTENSITY is ON).

See Also: Standard Color

Foreground Color :

The color of text appearing on the screen, usually on a different colored background.

See Also: Background Color

Full-screen Input/Output :

A style of operation of the keyboard and display used for complex data entry and display tasks. Full-screen input and output are generally performed using the @..SAY, @..GET and READ commands. Full-screen output is distinguished from console-style output by the fact that control characters (e.g., backspace, carriage return) are not processed, and wrapping and scrolling do not occur at the boundaries of the visible display area.

See Also: Console Input/Output

Highlight :

Indicates input focus for menus, browsers, or GETs. With menus and browsers, the currently selected item or cell has input focus and is displayed in the current enhanced color or inverse video. With GETs, the current GET is highlighted in the current enhanced color or inverse video while the other GETs are displayed in the current standard color if an unselected color setting is active.

See Also: Cell, Enhanced Color, Input Focus, Standard Color

Input Focus :

The GET, browse cell, or menu item where user interaction can take place is said to have input focus. The item with input focus usually is displayed in enhanced color or inverse video.

Insert Mode :

A data entry mode entered when the user presses the insert key. When this mode is active, characters are inserted at the cursor position. Text to the right of the cursor is shifted right.

See Also: Overstrike Mode

Keyboard Buffer :

An area of memory dedicated to storing input from the keyboard while a program is unable to process the input. When the program is able to accept the input, the keyboard buffer is emptied.

Menu :

An onscreen list of choices from which the user selects. Menus range from simple to elaborate forms. Two examples are menus that pull down from the top of the screen (an elaborate type requiring more programming), or a simple list of numbered items from which the user selects by entering the appropriate number.

Overstrike Mode :

A data entry mode entered when the user presses the insert key. When this mode is active, characters are entered at the cursor position and text to the right of the cursor remains stationary.

Picture :

A string that defines the format for data entry or display in a GET, SAY, or the return value of TRANSFORM(). Picture strings are comprised of functions which affect the formatting as a whole and a series of template characters that affect formatting on a character by character basis.

See Also: Template

Prompt :

A series of characters displayed on the screen indicating that input from the keyboard is expected.

Relative Addressing :

To refer to a memory address, array element, screen location, or printer location with respect to another value, rather than referring to a specific address or element.

Row :

A numeric expression that evaluates to an integer identifying a screen or printer row position.

See Also: Column, Field, Record

Scoreboard :

An area of the display on line 0 beginning at column 60 that displays status information during certain data entry operations.

Scrolling :

The action that takes place when the user attempts to move the cursor or highlight beyond the window boundary to access information not currently displayed.

See Also: Window

Standard Color :

The color pair definition that is used by all output options (such as SAY and ?), with the exception of GETs and PROMPTs, that use the enhanced color pair.

See Also : Enhanced Color

Template :

A mask that specifies the format in which data should be displayed. For example, you might want to store phone numbers as “9999999999” to save space, but use a template to display the number to the user as “(999) 999-9999.”

Typeahead Buffer :

See : Keyboard Buffer

Unselected Color :

The color pair definition used to display all but the current GET or the GET that has input focus. If this color setting is specified, the current GET is displayed using the current enhanced color.

See Also: Enhanced Color

User Function :

A user-defined function called by ACHOICE(), DBEDIT(), or MEMOEDIT() to handle key exceptions. A user function is supplied to one of these functions by passing a parameter consisting of a string containing the function’s name.

User Interface :

The way a program interacts with its user (i.e., menu operation and selection, data input methods, etc.)

Wait State :

A wait state is any mode that extracts keys from the keyboard except for INKEY(). These modes include ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ and WAIT.

Window :

A rectangular screen region used for display. A window may be the same size or smaller than the physical screen. Attempting to display information that extends beyond the specified boundaries of the window clips the output at the window edge.

Word Wrapping :

The process of continuing the current text on the next line of a display when a boundary is reached and breaking the text on a word boundary.

Your First HMG Program

HMG Tutor 1

Your First HMG Program

I’ll not be original, so this program will display a ‘Hello World’ message 🙂

#include ""
Function Main
      AT 0,0 ;
      WIDTH 400 ;
      HEIGHT 200 ;
      TITLE 'Tutor 01 - Hello World!' ;

 –  #include “” :   Inclusion of header file, required every HMG program.

–    DEFINE WINDOW command: Will create the main window for the program.

–    Win_1: Is the name of the window.

–    AT 0,0: Indicates the window position ( row=0, column=0 )

–    WIDTH 400: Means that the window will have 400 pixels width.

–    HEIGHT 200: Means that the window will have 200 pixels height.

–    TITLE ‘Hello World!’: Indicates the text in the window title bar.

–    MAIN: Indicates that we are defining the main application window (a main window is required for all HMG applications)

–    ACTIVATE WINDOW Form_1: Will show the window and start the event

That’s all !