[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"detail-sidebar-cat-1-en-105":3,"doc-seo-179668-105":53,"doc-detail-179668-en":127},{"code":4,"msg":5,"data":6},0,"success",[7,14,19,24,29,34,39,44,49],{"id":8,"doc_module":9,"doc_module_name":10,"category_name":11,"show_sort_weight":12,"slug":13},11,1,"Template","Presentations",90,"presentations",{"id":15,"doc_module":9,"doc_module_name":10,"category_name":16,"show_sort_weight":17,"slug":18},12,"Resumes",80,"resumes",{"id":20,"doc_module":9,"doc_module_name":10,"category_name":21,"show_sort_weight":22,"slug":23},14,"Invoices",70,"invoices",{"id":25,"doc_module":9,"doc_module_name":10,"category_name":26,"show_sort_weight":27,"slug":28},15,"Posters",60,"posters",{"id":30,"doc_module":9,"doc_module_name":10,"category_name":31,"show_sort_weight":32,"slug":33},16,"Social Media",50,"social-media",{"id":35,"doc_module":9,"doc_module_name":10,"category_name":36,"show_sort_weight":37,"slug":38},17,"Forms",40,"forms",{"id":40,"doc_module":9,"doc_module_name":10,"category_name":41,"show_sort_weight":42,"slug":43},18,"Letters",30,"letters",{"id":45,"doc_module":9,"doc_module_name":10,"category_name":46,"show_sort_weight":47,"slug":48},21,"Paper Templates",5,"papers-templates",{"id":50,"doc_module":9,"doc_module_name":10,"category_name":51,"show_sort_weight":4,"slug":52},158,"General","general-158",{"code":4,"msg":54,"data":55},"ok",{"site_id":56,"language":57,"slug":58,"title":59,"keywords":60,"description":61,"schema_data":62,"social_meta":120,"head_meta":122,"extra_data":124,"updated_unix":126},105,"en","hmg-extended-edition-version-2608","HMG Extended Edition - version 26.08","","HMG Extended Edition 26.08 changelog records a focused set of refactors, fixes, and enhancements. It eliminates duplicated gradient drawing code, resolves a critical GDI resource leak in LinearGradientBrush when compatible DC creation succeeds but bitmap creation fails, and improves readability via early-exit validation and unified painting/repaint rendering logic. It also standardizes constants and variable naming, adds TreeBuildFromArray() for building complete TREE hierarchies with flexible IDs and optional columns, and updates multiple samples and utilities including an adapted TSBrowse FTS filter and new Gemini API client.",{"@graph":63,"@context":119},[64,80,102],{"@type":65,"itemListElement":66},"BreadcrumbList",[67,71,74,77],{"item":68,"name":69,"@type":70,"position":9},"https://docshare.wps.com","Home","ListItem",{"item":72,"name":10,"@type":70,"position":73},"https://docshare.wps.com/template/",2,{"item":75,"name":51,"@type":70,"position":76},"https://docshare.wps.com/template/general/",3,{"item":78,"name":59,"@type":70,"position":79},"https://docshare.wps.com/template/hmg-extended-edition-version-2608/179668/",4,{"url":78,"name":59,"@type":81,"image":82,"author":87,"headline":59,"publisher":90,"fileFormat":93,"inLanguage":57,"description":61,"dateModified":94,"datePublished":95,"encodingFormat":93,"isAccessibleForFree":96,"interactionStatistic":97},"DigitalDocument",{"url":83,"@type":84,"width":85,"height":86},"https://docshare.wps.com/thumbnails/hmg-extended-edition-version-2608/179668.png","ImageObject",442,249,{"name":88,"@type":89},"Rowan","Person",{"url":68,"name":91,"@type":92},"DocShare","Organization","application/vnd.openxmlformats-officedocument.wordprocessingml.document","2026-10-20","2026-09-02",true,{"@type":98,"interactionType":99,"userInteractionCount":101},"InteractionCounter",{"@type":100},"ViewAction",8,{"@type":103,"mainEntity":104},"FAQPage",[105,111,115],{"name":106,"@type":107,"acceptedAnswer":108},"What critical bug was fixed in version 26.08?","Question",{"text":109,"@type":110},"A GDI resource leak was fixed in LinearGradientBrush: if CreateCompatibleDC succeeds but CreateCompatibleBitmap fails, the memDC device context is not deleted, causing a leak.","Answer",{"name":112,"@type":107,"acceptedAnswer":113},"What refactoring was done for gradient drawing?",{"text":114,"@type":110},"Gradient drawing logic was refactored to remove duplicated code by using a reusable drawing code block, and immediate painting/repaint rendering were unified to use identical logic.",{"name":116,"@type":107,"acceptedAnswer":117},"What is TreeBuildFromArray() used for?",{"text":118,"@type":110},"TreeBuildFromArray() builds a complete TREE control hierarchy from a simple parent-child array, supports unlimited nesting depth, accepts mixed ID types, and can optionally include Image and Cargo columns and choose NODE vs TREEITEM via a code block.","https://schema.org",{"og:url":78,"og:type":121,"og:title":59,"og:site_name":91,"og:description":61},"article",{"robots":123,"canonical":78},"index,follow",{"doc_id":125,"site_id":56},179668,1790623785,{"code":4,"msg":5,"data":128},{"doc_id":125,"user_id":129,"nickname":88,"user_avatar":130,"doc_module":9,"category_id":50,"category_name":51,"doc_title":59,"doc_description":61,"doc_content":131,"file_id":132,"file_url":133,"file_type":134,"file_size":135,"view_count":101,"is_deleted":4,"is_public":9,"is_downloadable":9,"audit_status":9,"page_count":136,"language":137,"language_code":57,"site_id":56,"html_lang":57,"table_of_contents":138,"faqs":139,"seo_title":140,"seo_description":61,"update_tm":141,"read_time":142},1099514067415,"https://ap-avatar.wpscdn.com/avatar/100002539d78ffe74a7?x-image-process=image/resize,m_fixed,w_180,h_180&k=1779092875211072502","2026/08/24: HMG Extended Edition version 26.08.\n* Refactored: Gradient drawing logic to eliminate duplicated code by using\na reusable drawing code block.\n* Fixed GDI Resource Leak (Critical): In LinearGradientBrush, if\nCreateCompatibleDC succeeds but CreateCompatibleBitmap fails,\nthe device context (memDC) is never deleted, causing a GDI\nresource leak.\n* Improved: Simplified control flow with early-exit validation for\nbetter readability and maintainability.\n* Improved: Replaced magic numeric border values with descriptive\nnamed constants.\n* Refactored: Unified immediate painting and repaint task rendering\nto ensure both use identical drawing logic.\n* Improved: Standardized variable names and code formatting for\ngreater consistency across the module.\n* Optimized: Simplified native C helper functions by removing\nredundant boolean conversions while preserving behavior.\nContributed by Grigory Filatov\n(see demo in folder \\samples\\Advanced\\DrawGradient)\n* Enhanced: Added TreeBuildFromArray() - new helper function.\n- Builds a complete TREE control hierarchy from a simple parent-child\narray.\n- Supports unlimited nesting depth while preserving original array\norder.\n- Accepts any ID type (character, numeric, GUID, mixed) by using\nthe row index as the internal Tree item ID.\n- Optional Image and Cargo columns.\n- Optional code-block to decide NODE vs TREEITEM.\n- Simple usage:\nTreeBuildFromArray( aData [, nIdCol, nTextCol, nParentCol,\nnImageCol, nCargoCol, bIsNode ] )\nRequested by Yunus Dagia.\nContributed by Grigory Filatov\n(see demo2.prg in folder \\samples\\Basic\\Tree_3)\n* Enhanced: Improved source documentation across core modules with consistent\nstructured comments (Purpose, Parameters, Return, Side Effects):\n- Create Windows handling;\n- Global Events procedure;\n- Rating control;\n- RichEditBox control;\n- StatusBar control;\n- Tab control;\n- Timer control;\n- ToolBar control;\n- TreeView control;\n- MRU menu support;\n- MessageBox handling;\n- HbPrinter library;\n- MiniPrint library;\n- PDF generation library hbvpdf.\n* Added inline explanations for key logic.\n* Improved clarity and maintainability with no functional changes.\nContributed by Grigory Filatov\n* Updated: Adapted FiveWin TSBrowse 9.0 for HMG:\n- improved FilterFTS() method with extra search symbols.\nSuggested and contributed by Sergej Kiselev\n(see demo in folder \\samples\\Advanced\\Tsb_Filter)\n* New: 'Tree Build From Array' sample:\n- Demonstrates how to dynamically populate the Tree control from\na multi-dimensional array loaded from a DBF table.\nContributed by Grigory Filatov\n(see demo3.prg in folder \\samples\\Basic\\Tree_3)\n* New: 'Tree Build From Directory' sample:\n- Builds a Tree control from the Windows file system via\nTreeBuildFromArray().\n- Recursively scans a selected folder into the standard parent-child\narray { ID, Caption, ParentID, Cargo, IsNode }\n- Demonstrates that TreeBuildFromArray() is a generic hierarchy\nbuilder (file system, DBF, SQL, XML, JSON, etc.)\n- Includes Browse/Refresh, Expand All/Collapse All, selection details\n(Name/Type/Full Path), and double-click to expand folders or open files.\n- Complements the DBF-based sample to show API reusability across\ndata sources.\nContributed by Grigory Filatov\n(see in folder \\samples\\Basic\\TreeBuildFromDirectory)\n* Updated: 'GraphPlus library demo' sample:\n- Added comprehensive professional documentation comments throughout\nthe source code while preserving original logic, structure, and\nformatting exactly.\nContributed by Grigory Filatov\n(see in folder \\samples\\Advanced\\GraphPlus)\n* Updated: 'CAB Creation, Info & Extraction' sample:\n- added detailed comments to the code.\nContributed by Grigory Filatov\n(see in folder \\samples\\Advanced\\HbCAB_2)\n* New: Added New Utility - Gemini API Client.\n- Added console utility gemini for interacting with Google Gemini\nmodels from Harbour.\n- Supports text prompts, multiple source files, streaming responses\nand optional file uploads.\n- Fully command-line driven (model, temperature, key, input/output\nfi","cbCail0o3HDBhtEH","https://ap.wps.com/l/cbCail0o3HDBhtEH","docx",371756,379,"English","# Changelog Entry\n## Refactored Graphics and Rendering\n## Critical GDI Resource Fix\n## Code Readability and Maintainability Improvements\n## New/Enhanced Tree Utilities and Samples\n## Updated Samples and Utilities","[{\"question\":\"What critical bug was fixed in version 26.08?\",\"answer\":\"A GDI resource leak was fixed in LinearGradientBrush: if CreateCompatibleDC succeeds but CreateCompatibleBitmap fails, the memDC device context is not deleted, causing a leak.\"},{\"question\":\"What refactoring was done for gradient drawing?\",\"answer\":\"Gradient drawing logic was refactored to remove duplicated code by using a reusable drawing code block, and immediate painting/repaint rendering were unified to use identical logic.\"},{\"question\":\"What is TreeBuildFromArray() used for?\",\"answer\":\"TreeBuildFromArray() builds a complete TREE control hierarchy from a simple parent-child array, supports unlimited nesting depth, accepts mixed ID types, and can optionally include Image and Cargo columns and choose NODE vs TREEITEM via a code block.\"}]","HMG Extended Edition - version 26.08 | DOCX",1788337793,133]