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.
Moderator: Rathinagiri
Hi Marek,
Thank you very muchPcmodula wrote: ↑Wed Jan 24, 2024 7:53 pmHi all,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.-
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, 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.
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.Hello Daniel,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
...
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