TMenu

TMenu

Postby ramirezosvaldo2 » Mon Jan 07, 2013 10:19 pm

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
ramirezosvaldo2
 
Posts: 58
Joined: Mon Jan 19, 2009 4:40 pm

Re: TMenu

Postby FiveWiDi » Mon Jan 07, 2013 11:52 pm

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  Expand view

#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 &registres 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
/* *************************************** */
 
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1189
Joined: Mon Oct 10, 2005 2:38 pm

Re: TMenu

Postby ramirezosvaldo2 » Tue Jan 08, 2013 5:26 am

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
ramirezosvaldo2
 
Posts: 58
Joined: Mon Jan 19, 2009 4:40 pm

Re: TMenu

Postby FiveWiDi » Tue Jan 08, 2013 7:11 pm

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.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1189
Joined: Mon Oct 10, 2005 2:38 pm

Re: TMenu

Postby ramirezosvaldo2 » Wed Jan 09, 2013 7:38 pm

Lo voy a intentar como lo suguieres, para ver si me funciona

Saludos
Osvaldo Ramirez
ramirezosvaldo2
 
Posts: 58
Joined: Mon Jan 19, 2009 4:40 pm


Return to FiveMac / FivePhone (iPhone, iPad)

Who is online

Users browsing this forum: No registered users and 2 guests