Page 1 of 1
TMenu
Posted: Mon Jan 07, 2013 10:19 pm
by ramirezosvaldo2
Hola ...
Como puedo hacer para que TMenu me acepte el valor de un macro ?
Algo así :
MENUITEM ctitle ACTION {|| do &(cCommand) }
o
MENUITEM ctitle ACTION &(cCommand)
Tengo una rutina que debe crear un Menu, siguiendo un patron de un archivo TXT, por lo tanto
los valores de cCommand, se van cambiando conforme voy leyendo el TXT.
Gracias de antemano
Saludos
Re: TMenu
Posted: Mon Jan 07, 2013 11:52 pm
by FiveWiDi
ramirezosvaldo2 wrote:Hola ...
Como puedo hacer para que TMenu me acepte el valor de un macro ?
Algo así :
MENUITEM ctitle ACTION {|| do &(cCommand) }
o
MENUITEM ctitle ACTION &(cCommand)
Tengo una rutina que debe crear un Menu, siguiendo un patron de un archivo TXT, por lo tanto
los valores de cCommand, se van cambiando conforme voy leyendo el TXT.
Gracias de antemano
Saludos
No se si te servirá, pero esto a mi me funciona.
Code: Select all
#include "FiveWin.ch"
/* *******************************************************************
29/09/2005
C.G
El menú
******************************************************************* */
FUNCTION MenuMain( AMPAarra )
Local oMRUWebIN
Local oMRUWebOUT
Local oMenuResPer
Local oMenuCAT
oMRUWebIN := Nil
oMRUWebOUT := Nil
oMenuResPer := Nil
oMenuCat := Nil
MENU AMPAarra[1][1][3] 2007 // Definimos el menú
MENUITEM GetText(11, " Fitxers &Mestres") FILE AMPAarra[1][2][95][3] WHEN lPermite( AMPAARRA )
MENU
MENUITEM GetText(357, "&Famílies AMPA") ACTION Famili10( AMPAarra, 0, Nil, 0 ) FILE AMPAarra[1][2][17][3]
SEPARATOR
MENUITEM GetText(16, "Codis Pos&tals") ACTION CodPos01( AMPAarra, 0, Nil, 0 ) // FILE AMPAarra[1][2][22][3]
SEPARATOR
MENUITEM GetText(18, "&Històric de registres") FILE AMPAarra[1][2][24][3]
MENU
MENUITEM GetText(19, "Històric de &Famílies") ACTION ExFAMI01( AMPAarra, 0, Nil, 0 ) FILE AMPAarra[1][2][25][3]
MENUITEM GetText(23, "Històric d'Assi&gnacions de conceptes") ACTION ExReCo01( AMPAarra, 0, Nil, 0 ) FILE AMPAarra[1][2][29][3]
ENDMENU
SEPARATOR
MENUITEM GetText(24, "&Sortir") ACTION CloseMainWnd( AMPAarra ) FILE AMPAarra[1][2][30][3]
ENDMENU
MENUITEM GetText(69, " Fac&turació") FILE AMPAarra[1][2][97][3] WHEN lPermite( AMPAARRA )
MENU
MENUITEM GetText(70, "&Domiciliacions") ACTION Domici10( AMPAarra, 0, Nil, 0 ) FILE AMPAarra[1][2][82][3]
SEPARATOR
MENUITEM GetText(77, "Esborra remesa &Simulació") ACTION lBorraSimula( AMPAARRA )
ENDMENU
MENUITEM GetText(25, " &Utilitats") FILE AMPAarra[1][2][96][3] WHEN lPermite( AMPAARRA )
MENU
MENUITEM GetText(39, "Tractament ®istres esborrats") FILE AMPAarra[1][2][67][3]
MENU
MENUITEM GetText(40, "&Sense filtrar registres esborrats") ACTION ( Set( _SET_DELETED, !Set( _SET_DELETED ) ), AMPAarra[1][2][ 54 ][ 3 ] := .F. ) WHEN Set( _SET_DELETED )
MENUITEM GetText(41, "Filtr&ant registres esborrats") ACTION ( Set( _SET_DELETED, !Set( _SET_DELETED ) ), AMPAarra[1][2][ 54 ][ 3 ] := .T. ) WHEN !Set( _SET_DELETED )
ENDMENU
MENUITEM GetText(42, "&Comptar registres") ACTION Contar00( AMPAarra ) FILE AMPAarra[1][2][68][3]
MENUITEM GetText(43, "&Modificacions diferides") ACTION Modifi01( AMPAarra, 0 ) FILE AMPAarra[1][2][69][3]
MENUITEM GetText(53, "Confi&gurar aplicació") FILE AMPAarra[1][2][77][3]
MENU
MENUITEM GetText(54, "Simular &resolució") FILE AMPAarra[1][2][78][3]
MENU
MENUITEM GetText(55, "Resolució de pantalla (") + cGetScrResolution( AMPAARRA ) + ")" ACTION AMPAarra[1][2][2][3] := 0
MENUITEM oMenuResPer PROMPT GetTrad( "Personalitzada (") + cGetScrApl( AMPAARRA ) + ")" ;
ACTION ( uSetScrResolution( AMPAARRA ), oMenuResPer:SetPrompt(GetTrad( "Personalitzada (") + cGetScrApl( AMPAARRA ) + ")") )
SEPARATOR
MENUITEM "800 x 600" ACTION AMPAarra[1][2][2][3] := 2
MENUITEM "1024 x 768" ACTION AMPAarra[1][2][2][3] := 3
MENUITEM "1152 x 864" ACTION AMPAarra[1][2][2][3] := 4
MENUITEM "1280 x 960" ACTION AMPAarra[1][2][2][3] := 14
MENUITEM "1280 x 1024" ACTION AMPAarra[1][2][2][3] := 6
MENUITEM "1600 x 1200" ACTION AMPAarra[1][2][2][3] := 7
ENDMENU
SEPARATOR
MENUITEM GetTrad("Gestió d'&idiomes" )
MENU
MENUITEM oMenuCat PROMPT "CATALÀ" ;
MESSAGE "Aplica el CATALÀ a l'aplicació." ;
ACTION ( AMPAarra[1][2][ 11 ][ 3 ] := "CAT", ;
SetIdioma( AMPAarra[1][2][ 11 ][ 3 ]), ;
AMPAArra[1][1][2][1][1]:SetMenu( MenuMain( AMPAarra ) ) ;
) ;
WHEN ( oMenuCat:SetCheck(SetIdioma() == "CAT"), .T. )
CreaMenuIdioma( AMPAARRA )
SEPARATOR
ENDMENU
SEPARATOR
ENDMENU
SEPARATOR
MENUITEM GetText(66, "Area restringida") FILE AMPAarra[1][2][81][3] WHEN .NOT. AMPAARRA[4][3]
MENU
MENUITEM GetText(67, "Browse de Dbf's") ACTION BrowDbf( AMPAarra )
SEPARATOR
MENUITEM GetText(68, "Exe MyAMPA32.prg") ACTION ExeFile( AMPAarra )
ENDMENU
ENDMENU
ENDMENU
Return AMPAarra[1][1][3]
// Fin del menú.
//
/* *************************************** */
FUNCTION CreaMenuIdioma( AMPAARRA )
Local oIni := Nil
Local aIdiomas := {}
Local nContador := 0
Local cDummy := ""
Local cIdioma := ""
INI oIni FILE cfilepath( Arg( 0 ) ) + ScFileidioma
aIdiomas := oIni:Sections()
For nContador := 1 To Len( aIdiomas )
cIdioma := aIdiomas[nContador]
// L'idioma CAT no s'afegeix al menú per que ho ha estat directament des de codi.
If cIdioma <> "CAT"
GET cDummy SECTION aIdiomas[nContador] ENTRY "DESCRIP" OF oIni
CreaMenuIdioma2( AMPAARRA, cDummy, cIdioma )
EndIf
Next
ENDINI
Return Nil
/* *************************************** */
/* *************************************** */
STATIC FUNCTION CreaMenuIdioma2( AMPAARRA, cDummy, cIdioma )
Local oElMenu := Nil
MENUITEM oElMenu PROMPT cDummy + " <-> " + cIdioma ;
MESSAGE cIdioma ;
ACTION ( AMPAarra[1][2][ 11 ][ 3 ] := cIdioma, ;
SetIdioma( AMPAarra[1][2][ 11 ][ 3 ] ), ;
AMPAArra[1][1][2][1][1]:SetMenu( MenuMain( AMPAarra ) ) ;
) ;
WHEN ( oElMenu:SetCheck(SetIdioma() == cIdioma), .T. )
Return Nil
/* *************************************** */
Re: TMenu
Posted: Tue Jan 08, 2013 5:26 am
by ramirezosvaldo2
Gracias mi estimado
Segun entiendo, primero envias toda la definicion del menu a un arreglo y luego haces el menu basado en el arreglo, es esto correcto ?
Si es asi, entonces el arreglo del menú es un arreglo publico y con una funcion extraes los valores para ejecutar.
A lo mejor mi problema es que quiero leer el texto, y ahi mismo hacer el menú.
Comentame si estoy mal,
Saludos
Osvaldo Ramirez
Re: TMenu
Posted: Tue Jan 08, 2013 7:11 pm
by FiveWiDi
ramirezosvaldo2 wrote:Gracias mi estimado
Segun entiendo, primero envias toda la definicion del menu a un arreglo y luego haces el menu basado en el arreglo, es esto correcto ?
Si es asi, entonces el arreglo del menú es un arreglo publico y con una funcion extraes los valores para ejecutar.
A lo mejor mi problema es que quiero leer el texto, y ahi mismo hacer el menú.
Comentame si estoy mal,
Saludos
Osvaldo Ramirez
No, no es eso.
La gracia del asunto es que, entre la definición del menú insertas una función que define las opciones variables que tu quieres. Tu lo quieres hacer desde un fichero TXT y yo lo hago des un fichero INI (da igual).
Podrías hacer (supongo):
MENU oMenu
mifuncioncreamentu()
ENDMENU
Sobre el uso del arreglo olvídate, es un requisito de mi aplicación, podría ser una variable LOCAL perfectamente.
Re: TMenu
Posted: Wed Jan 09, 2013 7:38 pm
by ramirezosvaldo2
Lo voy a intentar como lo suguieres, para ver si me funciona
Saludos
Osvaldo Ramirez