I'd like to provide this small obvervation for your attention.
Harbour MiniGUI Extended Edition (HMG Extended) is an active, community‑maintained Win32 GUI framework for Harbour (and xHarbour). It combines the Harbour xBase language with a declarative, command‑based GUI layer inspired by classic Visual Basic / RapidQ style.
It is not related to the Linux/embedded MiniGUI project from FMSoft.
Core Characteristics-
Language: Harbour (default) or xHarbour for business logic and data handling (DBF/CDX, SQL, etc.).
-
GUI Layer: Simple command syntax (DEFINE WINDOW, @ row, col CONTROL, ACTION, etc.) that abstracts the Win32 API.
-
Compilation: Translates to C, then links with Borland C++ (default 5.8), MinGW, MSVC, Open Watcom, or Pelles C.
-
Target: Native Windows desktop applications (Windows XP no longer supported). Supports pure GUI, console, or mixed mode.
-
Current status (as of mid‑2026): Active development led primarily by Grigory Filatov and contributors. Latest builds around 26.07.x.
Distribution Model (since ~24.02)
-
STANDARD: Debug MiniGUI library + standard Harbour. Free download. Suitable for development/learning. No advanced samples, utilities, or SQLRDD.
-
PROFESSIONAL (PRO): Optimized/release library + optimized Harbour VM + full samples, utilities, SQLRDD, extra tools. Donation‑only (password‑protected). Recommended for production.
- Private builds for modern toolchains (newer MinGW, BCC 7.x, MSVC, Zig) are available on request to donors.
Look at the detailed comparison in the attachment.Key Features and Extended ControlsMiniGUI Extended is a long‑running fork (from ~2005) of the original HMG. It maintains high compatibility while adding aggressive enhancements.
Extended / Enhanced Controls (examples):
- BUTTONEX – Owner‑draw buttons with images/icons + text, gradients, XP‑style options, vertical layout, etc.
- BTNTEXTBOX – TextBox with one or more embedded action buttons (and pictures).
- CHECKLABEL – Label with embedded bitmap/checkbox‑like behavior.
- COMBOBOXEX – ComboBox with images per item.
- CHECKLISTBOX – ListBox with checkboxes.
- SWITCHER – On/off style control.
- Enhanced GRID, BROWSE, and especially TSBrowse (very popular data‑centric browse with cell editing, append, validation, dynamic colors, etc.).
- RichEditBox improvements (keyword highlighting samples, etc.).
- StatusBar enhancements (progress items, icons, etc.).
- Many additional properties/methods on standard controls (colors, gradients, hot‑tracking, etc.).
Other Notable Capabilities:
- Declarative UI with two‑way visual designer support (HMGS‑IDE / newer RAD tools).
- Strong multi‑user DBF/CDX support + locking helpers (NetRecLock, NetAppend, etc.).
- SQL connectivity (SQLRDD available in PRO).
- Direct Win32 API access when needed (subclassing, custom drawing, system calls).
- Graphics support (Bos Taurus library integration in recent builds).
- i18n‑friendly (UTF‑8 support, easy string dictionaries).
- Extensive sample set (Basic + Advanced folders covering almost every control and many real‑world patterns).
- Project tools: compile.bat, MPM (project manager), IDE/RAD, function reference utilities, etc.
Architecture Highlights
- Command‑based DSL → highly readable and productive for business/CRUD applications.
- Controls are created and managed with simple code; events bound inline (ACTION, ON CHANGE, ON ENTER, etc.).
- Excellent integration with xBase data handling (workareas, indexes, browse synchronization via SET BROWSESYNC ON).
- Clean resource management patterns (window ON INIT / ON RELEASE for open/close tables, explicit unlocks).
- Extensible: custom controls, theming, timers, external libraries.
Typical Use CaseIdeal for rapid development of Windows business applications that need:
- Traditional xBase data access (DBF/CDX or SQL).
- Clean, maintainable GUI code.
- Multi‑user concurrency.
- Relatively small, native executables.
It is particularly popular among former Clipper/xBase developers who want a modern Windows GUI without switching to completely different paradigms (.NET, Electron, etc.).
Official Resources- Main site:
hmgextended.com /
hmgextended.org- Downloads and changelog available on the site.
- Community: Google Group minigui‑forum and related forums.
- Documentation: Included CHM/manuals + extensive samples in the distribution.
TSBrowse (often referred to as TBROWSE in syntax) is one of the most powerful and popular data‑grid controls in Harbour MiniGUI Extended Edition. It is an object‑oriented, highly customizable browse/grid component originally adapted from the FiveWin TSBrowse class (by Manuel Mercado and later contributors) and continuously enhanced for MiniGUI.
It is not the same as the simpler built‑in BROWSE control. TSBrowse is provided via its own library (#include "
tsbrowse.ch") and offers far richer features for professional data presentation and editing.
Key Capabilities
1. Data Sources
- DBF / workarea (RDD) – most common
- Two‑dimensional arrays
- ADO Recordsets
- Other objects / custom data sources
- Support for SQLRDD in PRO builds
2. Definition Styles
Two main ways to create it:
Declarative / command style
@ nRow, nCol TBROWSE oBrw ...
or
DEFINE TBROWSE oBrw AT nRow, nCol ...
...
END TBROWSE
Object‑oriented style (very common and powerful)
oBrw := TSBrowse():New( ... )
WITH OBJECT oBrw
:SetArray( aData )
:SetColor( ... )
:nHeightCell := 20
// many other settings
END WITH
oBrw:CreateFromCode() // or similar finalization
3. Editing and Data Manipulation
- Full cell / row editing (EDIT, CELLED / CELL / GRID modes)
- In‑place editing with validation
- Automatic Append mode (press Down arrow on last row → virtual blank record)
- Delete support
- Record locking support
- VALID / VALIDMESSAGES / READONLY arrays
- Dynamic column controls (different editors per column)
4. Appearance and Styling (Major Strength)
- Per‑column and per‑cell colors (foreground / background)
- Dynamic colors via codeblocks
- Header colors, fonts, multi‑line headers (CRLF supported)
- Super‑headers (merged headers spanning multiple columns)
- Grid line styles (nLineStyle)
- Cell height / margins
- Selector (cursor) style (row, cell, etc.)
- Images / icons in cells or headers
- Alignment (left/center/right) per column
- 3D look options
- Fonts, bold, etc.
5. Navigation and Behavior
- Highly configurable scrolling (horizontal/vertical, wheel lines)
- Incremental search (keyboard)
- Column reordering (drag and drop headers) – can be disabled
- Sorting via header clicks (optional)
- Filters (dynamic filters, index‑based filters, incremental search samples)
- Phantom / end column support
- Freeze columns (left side)
- Multi‑line cells
6. Methods and Runtime Control (Object API)
Common methods include:
- :Refresh(), :RefreshCurrent(), full/partial redraw
- :SetColor(), :SetAlign(), :SetArray(), :LoadFields()
- :AddColumn(), :InsColNumber(), column insert/delete at runtime
- :SetAppendMode(), :GoTop(), :GoBottom(), etc.
- :nWheelLines, :lNoHScroll, :ResetVScroll(), and many more configuration properties
- Event hooks for almost every user action
7. Advanced Features Seen in Samples
- Dynamic filtering (multiple concurrent filters)
- Incremental search
- Array‑based browsing with virtual columns (e.g., row numbers)
- JSON import/export
- Calendar‑style date marking
- Multiple simultaneous TSBrowse instances
- Integration with other controls (buttons, checkboxes for filters, etc.)
- Custom drawing and selector bitmaps
Comparison with Standard BROWSE
Aspect | Standard BROWSE | TSBrowse (TBROWSE)
--------------------|--------------------------|-------------------------------------
Complexity | Simple, procedural | Object‑oriented, highly configurable
Styling | Limited | Excellent (colors, lines, fonts…)
Editing | Basic inplace | Advanced cell editing + validation
Data sources | Mainly DBF | DBF, Array, ADO, custom
Performance control | Relies on BROWSESYNC | Fine‑grained refresh control
Learning curve | Low | Higher (but very powerful)
Typical use | Simple lists | Professional data grids
Documentation and Samples
- Official help: doc\TsBrowse.chm (included in MiniGUI distribution)
- Extensive samples in \samples\Advanced\TsBrowse\ and many other Tsb_* folders (filter, colors, array, viewer, multi‑window, etc.)
- Continuous improvements by the MiniGUI team (Sergej Kiselev, Verchenko Andrey, Grigory Filatov, Janusz Pora, and others)
Typical Usage Pattern
Most serious MiniGUI applications that need a modern, flexible data grid use TSBrowse instead of the classic BROWSE control. It is especially valued for:
- Inventory / customer / invoice screens
- Any multi‑column editable grid
- Situations requiring good visual polish and dynamic behavior
Your feedback is welcome.