MiniGUI Library Build 25.05 Now Available – New Features & Improvements!

239 views
Skip to first unread message

Grigory Filatov

unread,
May 5, 2025, 4:11:51 AM5/5/25
to Harbour Minigui
Hi Friends,

The MiniGUI team is excited to announce the release of the latest version of Harbour MiniGUI Extended Edition!

You can download the free STANDARD build for Borland C++ 5.8.2 at the following link:

https://hmgextended.com/files/CONTRIB/hmg-25.05-setup.zip

Please note that this build includes a DEBUG version of the MiniGUI library to assist in troubleshooting.

This build is NOT recommended for production use.

For those interested in the PROFESSIONAL build, a password-protected 7z archive is available for download here:

https://hmgextended.com/files/CONTRIB/hmg-25.05-pro.7z

The Pro Build is ideal for complex projects requiring advanced customization and database connectivity.  

Accessing the Pro Build:  
The password will be provided to all MiniGUI donors. Thank you for your support and generosity!  

This build is considered stable and ready for production use.

We highly recommend upgrading to this build to take advantage of the latest features and improvements.

These enhancements are part of our ongoing commitment to improving user experience, system efficiency, and data integrity.

A huge thank you to all the donors who continue to support this project.

Your contributions ensure that MiniGUI keeps growing and evolving!

Warm regards,  
Grigory Filatov  
MiniGUI Team

José Roberto

unread,
May 7, 2025, 4:38:51 AM5/7/25
to minigu...@googlegroups.com
Quam o valor da contribuição para adquirir uma versão profissional?

Alguém poderia me informar?

---------- Forwarded message ---------
De: José Roberto <jrgal...@gmail.com>
Date: qua., 7 de mai. de 2025 05:37
Subject: Fwd: [harbourminigui] MiniGUI Library Build 25.05 Now Available – New Features & Improvements!
To: <gfil...@gmail.com>


Bom dia!

Qual o valor da contribuição para adquirir uma versão profissional?

Alguém poderia me informar?

--
Visit our website on https://www.hmgextended.com/ or https://www.hmgextended.org/
---
You received this message because you are subscribed to the Google Groups "Harbour Minigui" group.
To unsubscribe from this group and stop receiving emails from it, send an email to minigui-foru...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/minigui-forum/92ae0ac9-c08d-419c-a174-4883c26c35cfn%40googlegroups.com.

valt...@valtecom.com.br

unread,
May 9, 2025, 7:23:32 AM5/9/25
to Harbour Minigui
To Grigory Filatov
Good morning, my friend Grigory Filatov,
I hope everything is fine.
My dear, I updated a new executable generated by the new version of Minigui "Harbour MiniGUI Extended Edition 25.05 (Standard)" on a client's computer and the anti-virus "Windows Defender" on the client's computer detected the new executable as a Virus and removed it and sent it to Quarantine. I scanned my PC with Avast Premium and it didn't detect anything, so I added the system folder to the exclusions. Is there any routine among the Minigui functions that causes this false positive?
Thank you
Valteçom
Uberaba MG Brazil

Grigory Filatov

unread,
May 9, 2025, 7:35:35 AM5/9/25
to Harbour Minigui
Good morning,

Thanks for your report!

This situation occurs from time to time after Windows Defender updates.

I recommend to verify your app with https://www.virustotal.com/ service before deployment to the client's computer.

>  Is there any routine among the Minigui functions that causes this false positive?
I don't know.
But I know that UPX packed executables will definitely trigger this false positive.

Have a nice day.

Regards,
Grigory

пятница, 9 мая 2025 г. в 13:23:32 UTC+2, valt...@valtecom.com.br:

Marcelo de Paula

unread,
May 9, 2025, 2:48:07 PM5/9/25
to Grigory Filatov, Marcelo Antonio Lázzaro Carli, Harbour Minigui
Dear Research Colleagues,
I hope this message finds you well. I am reaching out to request your assistance with a technical challenge I am facing in a project using Harbour/MiniGUI integrated with a MySQL database.
Issue Description:
When editing a record directly in the grid interface and saving changes to MySQL, the grid freezes after the update. This prevents other records from being selected or edited, requiring an application restart to restore functionality.
Technical Details:
Environment: Windows 11 | Harbour 3.6.0 | MiniGUI Extended Edition | MySQL 8.0
Current Workflow:
Edit a field in the grid (e.g., "Name").

Click "Save" (executes an UPDATE in MySQL).
The application updates the database record, but the grid freezes and does not reflect changes until restarted.
Troubleshooting Attempts:
Refreshing the grid with RefreshGrid() after the UPDATE.

Using COMMIT and ROLLBACK to ensure proper transaction handling.

Checking persistent connections and MySQL timeouts.

Testing SELECT queries post-update to reload data.

Questions for the Group:
Has anyone encountered grid freezes in Harbour-MySQL integrations?

Is there an efficient way to reload grids after MySQL operations without freezing the interface?

Would you recommend using TMySQLQuery or specific components for real-time updates?

Code Snippet (Harbour/MiniGUI):

// Construção do Grid
@ 75,01 GRID grid_clientes ;
    WIDTH GetProperty('frmPrincipal','width') - 230 ;
    HEIGHT 550 ;
    HEADERS {'Código','Razão Social','Nome Fantasia','CPF','Celular','Entrevistador'} ;
    WIDTHS {080,375,280,135,140,130} ;
    FONT "Microsoft YaHei" SIZE 12 ;
    BACKCOLOR {242,245,204} ;
    ON DBLCLICK dados(2) ;
    ON CHANGE AtualizaGrid() // Nova função para atualização

// Função para carregar/recarregar dados do MySQL
FUNCTION CarregaGrid()
    LOCAL cSQL := "SELECT id, razao, fantasia, cpf, celular, entrevistador FROM clientes"
    LOCAL aDados := {}
   
    IF ConectaMySQL()
        oQuery := oServer:Query(cSQL)
        IF !oQuery:NetErr()
            DO WHILE !oQuery:Eof()
                AADD(aDados, {;
                    oQuery:FieldGet(1),;
                    oQuery:FieldGet(2),;
                    oQuery:FieldGet(3),;
                    oQuery:FieldGet(4),;
                    oQuery:FieldGet(5),;
                    oQuery:FieldGet(6);
                })
                oQuery:Skip()
            ENDDO
            grid_clientes.DeleteAllItems()
            grid_clientes.AddItems(aDados)
        ENDIF
        DesconectaMySQL()
    ENDIF
RETURN NIL

// Função de atualização otimizada
FUNCTION AtualizaGrid()
    grid_clientes.DisableUpdate()
    CarregaGrid()
    grid_clientes.EnableUpdate()
    grid_clientes.Refresh()
RETURN NIL

// Modificação no método de salvamento
METHOD Btn_Save() CLASS MinhaJanela
    LOCAL cSQL := "UPDATE clientes SET " + ;
        "razao = '" + mysql_escape(ThisForm.txtRazao.Value) + "', " + ;
        "fantasia = '" + mysql_escape(ThisForm.txtFantasia.Value) + "' " + ;
        "WHERE id = " + AllTrim(Str(ThisForm.grid_clientes.Value))
   
    IF ConectaMySQL()
        TRY
            oServer:Query("START TRANSACTION")
            oServer:Query(cSQL)
            oServer:Query("COMMIT")
           
            // Atualização segura do grid
            AtualizaGrid()
           
        CATCH
            oServer:Query("ROLLBACK")
            MsgStop("Erro na atualização: " + ErrorMessage())
        FINALLY
            DesconectaMySQL()
        END
    ENDIF
RETURN NIL

Additional Notes:
The grid is populated via an initial SELECT query but does not reflect changes after UPDATE, even with Refresh().

I suspect the issue lies in reloading grid data after MySQL operations.

Your insights would be invaluable! If needed, I can share the full project or additional code snippets for further analysis.

Best regards,
Mr. Grigory

--

Ivanil Marcelino

unread,
May 9, 2025, 3:22:25 PM5/9/25
to Marcelo de Paula, Harbour Minigui
Nameform.grid_clientes.DeleteAllItems()
Nameform.grid_clientes.Disableupdate()
    IF ConectaMySQL()
        oQuery := oServer:Query(cSQL)
        IF !oQuery:NetErr()
            DO WHILE !oQuery:Eof()
                Nameform.grid_clientes.AddItem({  ;
                    oQuery:FieldGet(1),;
                    oQuery:FieldGet(2),;
                    oQuery:FieldGet(3),;
                    oQuery:FieldGet(4),;
                    oQuery:FieldGet(5),;
                    oQuery:FieldGet(6);
                })
                oQuery:Skip()
            ENDDO
        ENDIF
        DesconectaMySQL()
Nameform.grid_clientes.Enableupdate()

Reply all
Reply to author
Forward
0 new messages