Andrés González López

Contributed works of Andrés González López

Anchor Windows (ON MOUSEDRAG)
Bos Taurus – Incredible !!! 
DEFINE REPORT (with filtered data)
Demo Debug
Generate PDF files
Improved interfaces (Label Button)
My color list (


Mustafa Lopez

Contributed samples by Mustafa Lopez

ADORDD sample 

Auto Adjust

Base Graphic 

Bloqueo tabla dbf


Disk Player

Encrypt and Decrypt DBF

Encrypt Password

Encryption Extended

Encryption Extended – 2

Encryption text files


Improved interfaces (Label Button)

Generate TXT to PDF 

Line Box Ornaments 

New Box Shadow

Remember Fantasi

Mobile Letters


Restricted Access

RichEditBox Copy&Paste

Sample SQLite

Windows Prg Generator

XRTF (Barcodes in .rtf)

HMG 3.3.1 (Stable) Released

File Name: HMG.3.3.1.exe
File Size: 46.91 MB
Date: 15. July 2014


-HMG 3.3.1 (Stable) 2014/07/15

– Updated to latest Harbour Nightly Build (2014-07-15)

– New property in Label control

– NoPrefix

– New New property in DatePicker control

– FORMAT <cFormatDate> (see demo)

– New Now all controls (Button, CheckButton, ToolBarButton, ComboBox, Grid, Tab, Tree, Menu, etc) loaded images: BMP, GIF, TIF, JPG and PNG

– New Now all controls (Button, CheckButton, ToolBarButton, ComboBox, Grid, Tab, Tree, Menu, etc) support the NOTRANSPARENT property

– New Grid control support the NOTRANSPARENTHEADER property

– New Print images in formats: BMP, GIF, JPG, TIF, WMF, EMF, CUR and PNG.

- @ <nRow> , <nCol> PRINT IMAGE <cImageFileName> | <cImageResourcename>
WIDTH <nWidth>
HEIGHT <nHeight>
[ TRANSPARENTCOLOR anTransparentColor ]

– New functions for read Keyboard and Mouse (see doc)

– SET CONTROL <ControlName> OF <FormName> ONKEYEVENT <FuncName> | NIL

– SET CONTROL <ControlName> OF <FormName> ONMOUSEEVENT <FuncName> | NIL

– HMG_GetOnKeyControlIndex ( [ @nSubIndex ] ) –> nIndex

– HMG_GetOnMouseControlIndex ( [ @nSubIndex ] ) –> nIndex

– New functions for control edge (see doc)

– SET CONTROL <ControlName> OF <FormName> CLIENTEDGE

– SET CONTROL <ControlName> OF <FormName> STATICEDGE

– SET CONTROL <ControlName> OF <FormName> NOTEDGE

– New Functions:

– GetKeyboardLayoutName()

– ActivateKeyboardLayout()

– GetKeyboardLayout()

– GetKeyboardLayoutList()

– LoadKeyboardLayout ()

– UnloadKeyboardLayout()

– TerminateProcess ( [ nProcessID ] , [ nExitCode ] )

– GetWindowThreadProcessId (hWnd, @nThread, @nProcessID)

– IsWow64Process ( [ nProcessID ] ) –> return lBoolean

– return TRUE if a 32-bit application is running under 64-bit Windows (WOW64)

– return FALSE if a 32-bit application is running under 32-bit Windows

– return FALSE if a 64-bit application is running under 64-bit Windows

– WOW64 is the x86 emulator that allows 32-bit Windows-based applications to running on 64-bit Windows

– New: VirtualKeyboard (see doc)

– VirtualKeyboard.OPEN [ SHOW ]

– VirtualKeyboard.OPEN HIDE

– VirtualKeyboard.Show

– VirtualKeyboard.Hide

– VirtualKeyboard.Release

– VirtualKeyboard.IsRelease

– VirtualKeyboard.IsOpen

– VirtualKeyboard.IsVisible

– VirtualKeyboard.IsMinimize

– VirtualKeyboard.IsMaximize

– VirtualKeyboard.Handle

– VirtualKeyboard.Title [ := | –> ] cTitle

– VirtualKeyboard.Row [ := | –> ] nRow

– VirtualKeyboard.Col [ := | –> ] nCol

– VirtualKeyboard.Width [ := | –> ] nWidth

– VirtualKeyboard.Height [ := | –> ] nHeight

– VirtualKeyboard.FileName –> “OSK.EXE”

– VirtualKeyboard.FullFileName –> GetSystemDir()+”\OSK.EXE”

– Fixed Numeric Textbox bug –>

– Fixed bug in Grid control build in 64-bits –>

– Fixed bug in FocusedControl Property (reported by Tiampei)

– Fixed Windows problem of overlap between ToolBar Bottom and StatusBar


-Fixed when not found the text editor calls notepad.exe of windows (reported by Roberto Lopez)

-Updated Polish language in Unicode (contributed by Marek)




HMG.3.3.1 Portable : ( Patch 3 (Unicode) applied )

HMG.3.3.1 664.53 KB 

HMG.3.3.1 2.02 MB 
HMG.3.3.1 21.17 MB 
HMG.3.3.1 85.50 KB 
HMG.3.3.1 1.75 MB
HMG.3.3.1 1.74 MB 
HMG.3.3.1 207.78 KB 
HMG.3.3.1 588.89 KB
HMG.3.3.1 80.84 MB 
HMG.3.3.1 97.55 KB 
HMG.3.3.1 9.99 MB 
HMG.3.3.1 697.39 KB 

Harbour Commands

User Interface

? | ?? Display one or more values to the console
@…BOX Draw a box on the screen
@…CLEAR Clear a rectangular region of the screen
@…GET Build a new Get object and display it to the screen
@…PROMPT Paint a menu item and define a message
@…SAY Display data at a specified screen or printer row and column
@…TO Draw a single- or double-line box
ACCEPT* Place keyboard input into a memory variable
CLEAR TYPEAHEAD Empty the keyboard buffer
DISPLAY Display records to the console
INPUT* Enter the result of an expression into a variable
KEYBOARD Stuff a string into the keyboard buffer
LIST List records to the console
MENU TO Execute a lightbar menu for defined PROMPTs
READ Activate full-screen editing mode using Get objects
RESTORE SCREEN* Display a saved screen
SAVE SCREEN* Save the current screen to a buffer or variable
SET BELL Toggle sounding of the bell during full-screen operations
SET COLOR* Define screen colors
SET CONFIRM Toggle required exit key to terminate GETs
SET CONSOLE Toggle console display to the screen
SET CURSOR Toggle the screen cursor on or off
SET DECIMALS Set the number of decimal places to be displayed
SET DELIMITERS Toggle or define GET delimiters
SET ESCAPE Toggle Esc as a READ exit key
SET FIXED Toggle fixing of the number of decimal digits displayed
SET FORMAT* Activate a format when READ is executed
SET FUNCTION Assign a character string to a function key
SET INTENSITY Toggle enhanced display of GETs and PROMPTs
SET MESSAGE Set the @…PROMPT message line row
SET SCOREBOARD Toggle the message display from READ or MEMOEDIT()
SET TYPEAHEAD Set the size of the keyboard buffer
SET WRAP* Toggle wrapping of the highlight in menus
TEXT* Display a literal block of text
WAIT* Suspend program processing until a key is pressed


APPEND BLANK Add a new record to the current database file
APPEND FROM Import records from a database (.dbf) file or ASCII text file
AVERAGE Average numeric expressions in the current work area
CONTINUE Resume a pending LOCATE
COPY STRUCTURE Copy the current .dbf structure to a new database (.dbf) file
COPY STRUCTURE EXTENDED Copy field definitions to a .dbf file
COPY TO Export records to a database (.dbf) file or ASCII text file
COUNT Tally records to a variable
CREATE Create an empty structure extended (.dbf) file
CREATE FROM Create a new .dbf file from a structure extended file
DELETE Mark records for deletion
DELETE TAG Delete a tag
FIND* Search an index for a specified key value
GO Move the pointer to the specified identity
INDEX Build an index file
JOIN Build new database file by merging from two work areas
LOCATE Search sequentially for a record matching a condition
PACK Remove deleted records from a database file
RECALL Restore records marked for deletion
REINDEX Rebuild open indexes in the current work area
REPLACE Assign new values to field variables
SEEK Search an order for a specified key value
SELECT Change the current work area
SET AUTOPEN Toggles automatic opening of a structural index file
SET AUTORDER Defines the default controlling index for automatically opened index files
SET AUTOSHARE Defines network detection for shared file access
SET DELETED Toggle filtering of deleted records
SET DESCENDING Change the descending flag of the controlling order
SET EXCLUSIVE* Establish shared or exclusive USE of database files
SET FILTER Hide records not meeting a condition
SET INDEX Open one or more order bags in the current work area
SET MBLOCKSIZE Change the block size for memo files
SET ORDER Select the controlling order
SET RELATION Relate two work areas by a key value or record number
SET SCOPE Change the boundaries for scoping keys in controlling order
SET SCOPEBOTTOM Change bottom boundary for scoping keys in controlling order
SET SCOPETOP Change top boundary for scoping keys in controlling order
SET SOFTSEEK Toggle relative seeking
SET STRICTREAD Toggles read optimization for database access
SET UNIQUE* Toggle inclusion of non-unique keys into an index
SKIP Move the record pointer to a new position
SORT Copy to a database (.dbf) file in sorted order
SUM Sum numeric expressions and assign results to variables
TOTAL Summarize records by key value to a database (.dbf) file
UNLOCK Release file/record locks set by the current user
UPDATE Update current database file from another database file
USE Open an existing database (.dbf) and its associated files
ZAP Remove all records from the current database file

Program Execution

CANCEL Terminate program processing
DO* Executes a function or procedure
QUIT Terminate program processing
RUN Execute a OS command or program
SET KEY Assign a procedure invocation to a key
NOTE* Place a single-line comment in a program file
SET PROCEDURE* Compile procedures and functions into the current object file

Variable Management

CLEAR ALL* Close files and release public and private variables
CLEAR GETS Release Get objects from the current GetList array
CLEAR MEMORY Release all public and private variables
CLEAR SCREEN Clear the screen and return the cursor home
RELEASE Delete public and private memory variables
RESTORE Retrieve memory variables from a memory (.mem) file
SAVE Save variables to a memory (.mem) file
STORE* Assign a value to one or more variables
SET EXACT Toggle exact matches for character strings

Device, Files & Folders

CLOSE Close a specific set of files
COMMIT Perform a solid-disk write for all active work areas
COPY FILE Copy a file to a new file or to a device
DELETE FILE Remove a file from disk
DIR* Display a listing of files from a specified path
ERASE Remove a file from disk
RENAME Change the name of a file
SET ALTERNATE Echo console output to a text file
SET DEFAULT Set the application default drive and directory
SET DEVICE Direct @…SAYs to the screen or printer
SET PATH Specify the CA-Clipper search path for opening files
TYPE Display the contents of a text file


EJECT Advance the printhead to top of form
SET MARGIN Set the page offset for all printed output
SET PRINTER Toggle echo of output to printer or set the print destination

Label / Report

LABEL FORM Display labels to the console
REPORT FORM Display a report to the console

Date & Time

SET CENTURY Modify the date format to include or omit century digits
SET DATE Set the date format for input and display
SET EPOCH Control the interpretation of dates with no century digits




  S1LABEL() Prints a single label



  Prints a single label (1 or more copies) for the
  current record, based on the dimensions and contents definitions in
  .LBL file name <cLblfile>. The dimensions and contents are
  figured, and then presented for printing and/or editing.

   setkey(K_F10,{||S1LABEL("MAILING.LBL")} )
                      // sets key F10 to call this
                     // as a popup



Volum Info

* Harbour Example lists the volume serial numbers 
* and volum labels of all drives in the system ( PC ) 
* Build :
*          c:\harbour\bin\hbmk2 VolInfo -lhbct -lxhb -run
   LOCAL nDrive, cDrive, nSerial, cSerial
   SetMode( 25, 80 )  
   SETPOS( 5, 0 )
   FOR nDrive := 1 TO 26
      cDrive  := CHR( 64 + nDrive ) + ":\"
      nSerial := VolSerial( cDrive )
      IF nSerial # -1
         cSerial := NTOC( nSerial, 16 )
         ? cDrive, STUFF( cSerial, 5, 0, ":" ) + " " + GetVolInfo( cDrive )
   @ MAXROW(), 0
   WAIT "EOF VolInfo.prg"

Hello World – 3

Don’t worry ! This is the last; and important.

Extract DEFINE LABEL – END LABEL structure or @ …,… LABEL command ( which one is currently exist) and then instead of them place this line :

MsgBox( "Hello World !" )

In HMG, there are a lot of message functions, with name prefixed by “Msg“; for details please look at HMG Message Functions page.

After building and running, try a more important feature: reduce your program to these minimum size:

#include <>
   MsgBox( "Hello World !" )

RETURN // Main()

In fact, as a rule, every HMG project must have one and only one “Main” window. This message functions are exception of this rule. If you have only message function(s) you can build a program without main window.