
I need make a main menu dinamic from file dbf in HMG4.Like as menudbf from Minigui (\minigui\samples\basic\menudbf) - I try compile this example but it make error

Thank you
Claudio Galera
(Ignore the error defined by the window, please)
Moderator: Rathinagiri
Code: Select all
#include 'hmg.ch'
#include 'common.ch'
#define CrLf chr(13)+chr(10)
#define cAcercaDe "Ejemplo de definición de menú"+CrLf+"en tiempo de ejecución"+CrLf+CrLf+cVersion+CrLf+CrLf+chr(174)+" Abril 2006, Roberto Sánchez"+CrLf+CrLf+MiniGUIVersion()+CrLf+Version()
#define cFaltaMenu "Falta la tabla MenuDBF.DBF","Falta Archivo"
#define cVersion "Versión 00.00.01"
Static aListItens:={}
Function Main()
Public cm_tipo
Public cm_caption
Public cm_action
Public cm_name
Public cm_image
Public cm_checked
Public cm_Disabled
Public cm_Message
Public bManejadorError, bUltimoManejador, objErr,wret:=.F.
Public cFile:="Menu.DBF"
Public c1, c_dbf, f
Public cm_Idioma:=2
Public lescolha:= .t.
Set exclusive off
If file(cfile)
C1:=RAT(".",CFILE)
C_DBF:=LEFT(CFILE,C1-1)
USE &C_DBF NEW
INDEX ON descend(FIELD->LINHA) TO &C_DBF
Do while !eof()
AADD(aListItens,{"","","","","","","","","","",.F.,.F.})
Ains(aListItens,1)
aListItens[1]:={(Alias())->TIPO,; // 1
(Alias())->CAPTIONP,; // 2
(Alias())->CAPTIONE,; // 3
(Alias())->CAPTIONI,; // 4
(Alias())->NOME,; // 5
(Alias())->ACTION,; // 6
(Alias())->IMAGE,; // 7
(Alias())->MESSAGEP,; // 8
(Alias())->MESSAGEE,; // 9
(Alias())->MESSAGEI,; // 10
(Alias())->CHECKED,; // 11
(Alias())->DISABLED} // 12
skip
Enddo
USE
DEFINE WINDOW WinMain AT 0, 0 WIDTH 800 HEIGHT 600 TITLE "Menu DBF en tiempo de ejecución" MAIN
DEFINE MAIN MENU
FOR f:= 1 to len(aListItens)
cm_tipo :=aListItens[f][1]
cm_caption :=ALLTRIM(aListItens[f][2+cm_Idioma])
cm_name :=ALLTRIM(aListItens[f][5] )
cm_action := iif(EMPT(ALLTRIM(aListItens[f][6])),Nil,alltrim(aListItens[f][6]))
cm_image :=IIF(EMPT(ALLTRIM(aListItens[f][7])),NIL,ALLTRIM(aListItens[f][7]))
cm_Message :=IIF(EMPT(ALLTRIM(aListItens[f][8+cm_Idioma])),NIL,ALLTRIM(aListItens[f][8+cm_Idioma]))
cm_checked :=aListItens[f][11]
cm_Disabled :=aListItens[f][12]
If cm_tipo = "DEFINE POPUP"
DEFINE POPUP cm_caption NAME cm_name
ELSEIF cm_tipo = "MENUITEM"
If !cm_checked
IF cm_Disabled
if cm_action = nil
MENUITEM cm_caption ACTION nil Name cm_name IMAGE cm_image
else
MENUITEM cm_caption ACTION { || &cm_action }
endif
Else
if cm_action = nil
MENUITEM cm_caption ACTION nil NAME cm_name IMAGE cm_image
else
MENUITEM cm_caption ACTION { || &cm_action } NAME cm_name IMAGE cm_image
Endif
Endif
Else
IF cm_Disabled
if cm_action = nil
MENUITEM cm_caption ACTION nil NAME cm_name IMAGE cm_image CHECKED
else
MENUITEM cm_caption ACTION { || &cm_action } NAME cm_name IMAGE cm_image CHECKED
endif
ELSE
if cm_action = nil
MENUITEM cm_caption ACTION nil NAME cm_name IMAGE cm_image CHECKED
else
MENUITEM cm_caption ACTION { || &cm_action } NAME cm_name IMAGE cm_image CHECKED
endif
ENDIF
Endif
ELSEIf cm_tipo = "SEPARATOR"
SEPARATOR
ELSEIF cm_tipo = "END POPUP"
END POPUP
Endif
next
END MENU
DEFINE STATUSBAR
STATUSITEM ""
CLOCK WIDTH 85
DATE
END STATUSBAR
END WINDOW
Center Window WinMain
Activate Window WinMain
Else
MsgStop(cFaltaMenu)
Endif
Return Nil
*------------------------------------------------------------
* Ejemplo de definición de menú partiendo de una tabla
* (r) 2006, Roberto Sánchez
*------------------------------------------------------------
Function Salir()
Release Window All
Return Nil
*------------------------------------------------------------
* Ejemplo de definición de menú partiendo de una tabla
* (r) 2006, Roberto Sánchez
*------------------------------------------------------------
Function AcercaDe()
MsgInfo(cAcercaDe)
Return Nil
Code: Select all
*msginfo(GetCurrentFolder())
Center Window WinMain
Activate Window WinMain
Else
MsgStop(cFaltaMenu)
Endif
Code: Select all
msginfo(GetCurrentFolder())
Center Window WinMain
Activate Window WinMain
Else
MsgStop(cFaltaMenu)
Endif
Code: Select all
IF ..............................................
...
DEFINE POPUP cm_caption NAME cm_name
...
...
ELSEIF cm_tipo = "END POPUP"
END POPUP
Endif
Code: Select all
IF ..............................................
...
With Object MENUPOPUP():New( "cm_name",, cm_caption )
...
...
ELSEIF cm_tipo = "END POPUP"
end
Endif