HMG Extended Edition version 24.01 is published

You can share your experience with HMG. Share with some screenshots/project details so that others will also be benefited.

Moderator: Rathinagiri

User avatar
gfilatov
Posts: 1099
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: HMG Extended Edition version 24.01 is published

Post by gfilatov »

mol wrote: Wed Jan 24, 2024 5:19 pm It really looks great, but I have no time to port myain application to hmg Extended. It would be great to adapt tsbrowse to hmg official.
You put some years ago tsbrowse module for hmg official, but I can't find it now
Hi Marek,

Thanks for your feedback!

The above tsbrowse module for hmg official has long been outdated. :?

The TSBrowse library has been updated to the final version 9.0 (from the original version 7.0), and the use of hashes has been added for speedup. :arrow:
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
gfilatov
Posts: 1099
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: HMG Extended Edition version 24.01 is published

Post by gfilatov »

Pcmodula wrote: Wed Jan 24, 2024 7:53 pm
EduardoLuis wrote: Wed Jan 24, 2024 7:28 pm Grigory, EXCELLENT job.-
This tsbrowse looks like codejock browse.- I must agree with Mol, because i ve try many ways to compile my app with Hmg Ext, but, allways i fail.-
So till now, im using HMG 3.4.- A good idea will be performing an IDE that automatically generates the .EXE final file (like in HMG).- I know that making that proposal is very heavy, but in some time it will be the best of the best.-
Again, congratulations for your new version.-
With regards.-
Hi all,
Minigui Extended provide almost two ide and is full source included.
If you really wants use Minigui Extended and we need a powefull ide , I suggest use Designer:
https://github.com/ivanilmarcelino/designer
This tool include an updated Minigui distro :o , Borland compiler, mysql portable ,text editor, One terminal for function test, multilingual and one wonderfull ide . But i don't want say all features. ;)
Good programming with Minigui Extended.
Thank you very much :!:

I confirm that this Designer is an excellent professional tool. :D
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
danielmaximiliano
Posts: 2646
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: HMG Extended Edition version 24.01 is published

Post by danielmaximiliano »

hello Grigory
I would like to know if harbour handles pointers and if so how to use it
in Pascal I used pointers more or less like this

Code: Select all


TYPE
Registro = Record
x, y : Integer;
nombre : String[80];
end;
PunteroAReg = ^Registro;

VAR
puntero : PunteroAReg;

BEGIN

New(puntero)
puntero^.x := 30;
puntero^.nombre := ´Jorge´;
...
{Hago el uso que quiera de la variable...}
...
{Y luego la libero de la memoria.}

Dispose(puntero);

END.
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
gfilatov
Posts: 1099
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: HMG Extended Edition version 24.01 is published

Post by gfilatov »

danielmaximiliano wrote: Fri Jan 26, 2024 2:25 am hello Grigory
I would like to know if harbour handles pointers and if so how to use it
...
Hello Daniel,

Yes, it is possible.
We have the SET OOP ON command in the MiniGUI Ex.

For example, you can use the following code after setting the above sommand.

Code: Select all

*-----------------------------------------------------------------------------*
FUNCTION _oThis( oThis, lSets )      // Snapshot of current data This or Sets
*-----------------------------------------------------------------------------*
   LOCAL c, i := 0, k, o := oHmgData()

   IF HB_ISLOGICAL( oThis )
      lSets := oThis
      oThis := Nil
   ENDIF

   DEFAULT lSets := .F.

   o:FormIndex      := _HMG_ThisFormIndex
   o:EventType      := _HMG_ThisEventType
   o:Type           := _HMG_ThisType
   o:Index          := _HMG_ThisIndex
   o:FormName       := _HMG_ThisFormName
   o:ControlName    := _HMG_ThisControlName
   o:FocusedForm    := ""
   o:FocusedControl := ""
   o:FocusedControlIndex := 0
   DEFAULT o:FormName := "", o:ControlName := ""
   IF !Empty( c := GetFocus() )
      IF ( k := AScan( _HMG_aControlHandles, c ) ) > 0
         o:FocusedControlIndex := k
         o:FocusedControl := _HMG_aControlNames [ k ]
         c := _HMG_aControlParentHandles [ k ]
         IF ( k := AScan( _HMG_aFormHandles, c ) ) > 0
            o:FocusedForm := _HMG_aFormNames [ k ]
         ENDIF
      ELSEIF ( k := AScan( _HMG_aFormHandles, c ) ) > 0
         o:FocusedForm := _HMG_aFormNames [ k ]
      ENDIF
      IF !Empty( o:FocusedForm ) .AND. o:FormName != o:FocusedForm
         IF HB_ISLOGICAL( lSets ) .AND. ( k := GetFormIndex( o:FocusedForm ) ) > 0
            // Sets objects variable
            o:FormName       := o:FocusedForm
            o:FormIndex      := k
            o:EventType      := ""
            o:Type           := iif( _HMG_aFormType [ k ] == "C", "W", _HMG_aFormType [ k ] )
            o:Index          := k
            o:ControlName    := ""
            // Sets This variable
            IF lSets                
               _HMG_ThisFormIndex   := o:FormIndex
               _HMG_ThisEventType   := o:EventType
               _HMG_ThisType        := o:Type
               _HMG_ThisIndex       := o:Index
               _HMG_ThisFormName    := o:FormName
               _HMG_ThisControlName := o:ControlName
            ENDIF
         ENDIF
      ENDIF
   ENDIF
   k := iif( Empty( _HMG_ThisControlName ), o:FocusedControlIndex, _HMG_ThisIndex )
   IF !Empty( k )
      o:ControlCargo        := _HMG_aControlMiscData2     [ k ]
      o:ControlHandle       := _HMG_aControlHandles       [ k ]
      o:ControlParentHandle := _HMG_aControlParenthandles [ k ]
      o:ControlParentName  := GetParentFormName ( k )
   ENDIF
   IF _HMG_ThisFormIndex > 0
      o:FormCargo        := _HMG_aFormMiscData2    [ _HMG_ThisFormIndex ]
      o:FormHandle       := _HMG_aFormHandles      [ _HMG_ThisFormIndex ]
      o:FormParentHandle := _HMG_aFormParentHandle [ _HMG_ThisFormIndex ]
      GetFormNameByHandle ( o:FormParentHandle, @c )
      o:FormParentName := c
      o:FormObject := _WindowObj( o:FormHandle )
   ENDIF

   IF HB_ISOBJECT( oThis )
      IF   oThis:ClassName == 'TSBROWSE'
         oThis := oThis:cParentWnd
      ELSEIF oThis:ClassName == 'TWNDDATA'
         oThis := oThis:Name
      ENDIF
   ENDIF

   IF HB_ISCHAR ( oThis ) ; oThis := GetFormIndex ( oThis )
   ENDIF

   IF HB_ISNUMERIC ( oThis ) .AND. oThis > 0 ; i := oThis
   ENDIF

   IF i > 0
      _HMG_ThisFormIndex   := i
      _HMG_ThisEventType   := ""
      _HMG_ThisType        := iif( _HMG_aFormType [ i ] == "C", "W", _HMG_aFormType [ i ] )
      _HMG_ThisIndex       := i
      _HMG_ThisFormName    := _HMG_aFormNames[ i ]
      _HMG_ThisControlName := ""
   ELSEIF HB_ISOBJECT( oThis ) .AND. oThis:ClassName $ "THMGDATA,TKEYDATA,TTHRDATA"
      IF !Empty( oThis:FormIndex )
         _HMG_ThisFormIndex   := oThis:FormIndex
         _HMG_ThisEventType   := oThis:EventType
         _HMG_ThisType        := oThis:Type
         _HMG_ThisIndex       := oThis:Index
         _HMG_ThisFormName    := oThis:FormName
         _HMG_ThisControlName := oThis:ControlName
      ENDIF
   ENDIF

RETURN o
where the o object contains automatically created variables:
o:FormIndex := _HMG_ThisFormIndex
o:EventType := _HMG_ThisEventType
o:Type := _HMG_ThisType
o:Index := _HMG_ThisIndex
o:FormName := _HMG_ThisFormName
o:ControlName := _HMG_ThisControlName
o:FocusedForm := ""
o:FocusedControl := ""
o:FocusedControlIndex := 0
and so on. :arrow:
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
Post Reply