📢 Announcement: HMGEE-Sample-Library 1.0.0 — progressive educational sample library for HMG Extended (feedback welcome)

108 views
Skip to first unread message

Grigory Filatov

unread,
Jul 26, 2026, 11:45:40 AMJul 26
to Harbour Minigui
Hello everyone,

I’m sharing HMGEE-Sample-Library 1.0.0, a structured educational repository for Harbour MiniGUI Extended Edition (Borland C++ 5.8 / Windows only).

What it is

A version-controlled project that aims to serve as:

- a progressive learning path (20 independent examples, 01 → 20)
- a practical coding standard for HMG Extended applications
- a long-term reference implementation, not a loose collection of demos

Each example has its own README.md, VERSION, Build.bat, Clean.bat, and source, compiles and runs on its own, and focuses on one primary concept.

Learning path overview:

| Milestone | Examples | Focus |
|-----------|----------|--------|
| 1 | 01–05 | Window, messages, labels/buttons, menus, toolbar/status |
| 2 | 06–10 | Input controls, containers, lists, Grid, Browse |
| 3 | 11–15 | TSBrowse, Tree, RichEdit, drawing, DBF forms |
| 4 | 16–18 | SQL patterns (offline-capable), MiniPrint |
| 5 | 19–20 | Complete DBF and SQL-pattern maintenance apps |


SQL examples (16, 17, 20) run offline by default with demo data so they always compile; each documents how to enable a live connection using official HMG Extended samples/sources.

How this differs from the classic SAMPLES tree

The official HMG Extended SAMPLES folders are excellent technical references and real-world snippets. This library is deliberately different in purpose:

| Classic SAMPLES   | HMGEE-Sample-Library |
|-------------------|----------------------|
| Feature / technique demos, often dense | One primary learning objective per example |
| Varying style and naming | Single coding standard (section order, constants, naming, short Main()) |
| Examples may assume prior knowledge of other samples | Conceptual progression only; no source-code dependence between examples |
| Documentation often minimal or absent | Every example has a 12-section README (purpose, objectives, walkthrough, key concepts, related examples, references) |
| Full feature surface of a control | Intentionally simplified for teaching; complexity added only when it serves the lesson |
| SQL samples typically need a server | Offline-first demos + documented live path |


In short: SAMPLES shows what is possible; this library tries to teach how to get there, step by step, with production-style habits.

Supporting docs included: style guide, repository specification, design guide, review checklist, control catalog, and a reference matrix mapping each example to original HMG Extended samples.

Feedback requested

I would especially value comments on educational clarity:

1. Is the sequence of topics logical for a new or intermediate HMG Extended learner?
2. Does each early example stay focused enough, or does any one try to teach too much at once?
3. Are the README walkthroughs and “Key Concepts” sections actually helpful when studying the source?
4. Is anything important missing before the complete applications (19–20)?
5. Are the offline SQL demos clear enough about what is demo data vs. a real connection?

Bug reports, style nits, and suggestions for the next minor release are also welcome.

Platform note: Harbour MiniGUI Extended + Borland C++ 5.8 + Windows only.

If useful, this could sit alongside the classic samples as a teaching path; if not, the feedback will still improve it. Thank you for taking a look.

Best regards
Grigory Filatov
Message has been deleted

Grigory Filatov

unread,
Jul 26, 2026, 11:53:54 AMJul 26
to Harbour Minigui
HMGEE-Sample-Library structure

Root: HMGEE-Sample-Library/ (v 1.0.0)  
Scale: ~117 files · 20 independent examples · MIT license · Windows + HMG Extended + Borland C++ 5.8 only

Download:
https://hmgextended.com/files/CONTRIB/HMGEE-Sample-Library-1.0.0.zip
---

Top-level layout

HMGEE-Sample-Library/
├── .gitignore                 # Build artifacts, generated DBFs, notes.txt, IDE clutter
├── VERSION                    # 1.0.0
├── LICENSE.txt                # MIT
├── README.md                  # Project overview, learning path, quick start
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
├── SUPPORT.md

├── STYLE_GUIDE.md             # Coding standard (section order, naming, formatting)
├── REPOSITORY_SPECIFICATION.md
├── DESIGN_GUIDE.md            # How to design an example
├── REVIEW_CHECKLIST.md        # Quality gate before merge
├── ROADMAP.md
├── REFERENCE_MATRIX.md        # Example ↔ original HMG SAMPLES mapping
├── CONTROL_CATALOG.md         # First introduction of each control

├── docs/
│   └── RELEASE_NOTES_1.0.0.md

├── common/
│   └── VerifyEnvironment.bat  # Optional Harbour/BCC path check

└── examples/
    ├── 01_HelloWorld/ … 20_CompleteSQLApplication/

---

Every example folder (fixed shape)

examples/NN_Name/
├── README.md      # 12 sections (Purpose → Repository Version)
├── VERSION        # 1.0.0
├── Build.bat      # Calls %MG_ROOT%\batch\Compile.bat
├── Clean.bat      # Removes .exe/.obj/.map/.tds/.ppo/.c
└── Name.prg       # Self-contained source (no cross-example source deps)

Optional extras only when needed (e.g. DBF created at runtime, not committed).

---

Learning path (5 milestones)

| Milestone | Examples | Theme |
|-----------|----------|--------|
| 1 Foundation | 01–05 | Window, Msg*, Label/Button, Menus, Toolbar/StatusBar |
| 2 Core controls | 06–10 | Input, Frame/Tab/Panel, List/Combo, Grid, Browse |
| 3 Advanced + DBF | 11–15 | TSBrowse, Tree, RichEdit, DRAW, form-centric DBF |
| 4 Data & reporting | 16–18 | SQLRDD (offline+sketch), EasySQL (offline+sketch), MiniPrint |
| 5 Complete apps | 19–20 | Full DBF maintenance; SQL-pattern app (swappable DataLoad) |


Conceptual progression only — no shared source between examples.

---

Documentation roles

| Document | Role |
|----------|------|
| STYLE_GUIDE | Header, includes, metadata, constants, short Main(), naming, 3-space indent, UPPERCASE HMG commands |
| REPOSITORY_SPECIFICATION | Mission, platform rules, directory rules, quality gates |
| DESIGN_GUIDE | One concept per example; README template; complexity budget |
| REVIEW_CHECKLIST | A–I checklist before accepting an example |
| REFERENCE_MATRIX | Primary HMG sample, simplifications, deviations, API status |
| CONTROL_CATALOG | Control → primary example index |
| ROADMAP | Milestone status and post-1.0 ideas |


---

Source conventions (every .prg)

1. Header comment block  
2. #include "minigui.ch" (+ extras only if needed, e.g. miniprint.ch, tsbrowse.ch)  
3. Metadata (APP_TITLE, APP_VERSION, …)  
4. Layout constants  
5. Short Main() → CreateMainWindow()  
6. Window definition  
7. Event handlers (On…)  
8. Helpers  

---

Notable content details

- 16 / 17 / 20 READMEs include live SQL sketches (educational; verify against local samples\SQLRDD / Source\HMG_EasySQL).
- SQL examples run offline by default so they always compile without a server.
- .gitignore excludes *.exe, *.obj, *.ppo, generated CUSTOMER/EMPLOYEE/PRODUCT DBF indexes, notes.txt, IDE folders.

---

How to navigate as a learner

1. Read root README.md + STYLE_GUIDE.md  
2. Start at examples/01_HelloWorld → Build.bat → run .exe  
3. Advance by number; use each README’s Related Examples and Reference HMG Samples  
4. Use CONTROL_CATALOG to jump to the first example that introduces a control  
5. Use REFERENCE_MATRIX to compare with classic SAMPLES\ demos  

That is the full structural map of the library as it stands in the current workspace.

Regards,
Grigory

valt...@valtecom.com.br

unread,
Jul 27, 2026, 1:07:38 PMJul 27
to Harbour Minigui
Dear Grigory Filatov,
Excellent initiative, I learned Minigui in version 0.9X in 2002 using the examples from the SAMPLES folder and if there was something more organized like in your project it would be much faster.

Thank you.
Valteçom
Uberaba MG Brazil

Marcos Jarrin

unread,
Jul 28, 2026, 6:38:06 PMJul 28
to Harbour Minigui
Hello, Grigory Filatov.

I have noticed that the repository is managed with a version control system, apparently Git. Why don't you create a public repository on GitHub to facilitate collaboration, report bugs, suggest new features, and propose improvements?

I look forward to your response.

Sincerely,
Marcos Jarrín
Reply all
Reply to author
Forward
0 new messages