Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2008
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Smile Que objecto es ejecutado cuando se llama una opcion del menu

Buenos dias Foristas,
Quiero recorrer las opciones las opciones de un menu para averiguar que opcion se ejecuta cuando selecciono la opcion, este proceso los realizado mediante el siguiente proceso y obtengo la lista de todos opciones por menu, pero requiero obtener el nombre de la accion que ejecuto. Esto es para genertar un archivo con las opciones del menu. Adjunto el framento de codigo conque obtengo los items y descripciones . pero quiero obtener es el programa que ejecuto ejemplo quiero obtener el datos TABLASGEN para identificar que programa ejecuta ya que nombre del objeto lo manejo como variable, gracias por su ayuda

Código:
      object M_TABLASGEOGRAFICA: TMenuItem
        Caption = 'Menu Tablas Datos Geograficos'
        Hint = 'M_TABLASGEOGRAFICA--Menu Tablas Datos Geograficos'
        object COUNTRY: TMenuItem
          Caption = 'Mantenimiento Codigos de Paises'
          Hint = 'PAISMST--Mantenimiento Codigos de Paises'
          OnClick = TABLASGEN
        end
Código:
procedure TFPGMMST.SpeedButtonActPgmMstClick(Sender: TObject);
var
 i:integer;
 Z:integer;
 p:string;
 D:string;
 W_ACTION:STRING;
 MENUITEM :TMenuItem;
 MENUITEMP:TMenuItem;

 NotifyEvent:TNotifyEvent;
  mp:string;

begin
//     TABLASGEN ;
//     CONSULTASGEN ;


  Z := fmenu.componentCount -1 ;   // FMENU LA FORMA DONDE ESTAN LOS MENU
  for i:= 0 to Z do begin
    if fmenu.components[i] is TmenuItem then begin
       mp:='';
       MENUITEM:= fmenu.components[i] as TMenuItem ;
       if  MENUITEM.hasparent = true then Begin    // NOMBRE DEL MENU DE LA OPCION
           MP:= MENUITEM.parent.name;
       end;

       p:= fmenu.components[i].name;
       D:= Trim(MENUITEM.Caption);                  // DESCRIPCION DE LA OPCION
       NotifyEvent:=  MENUITEM.OnClick ;
       //IF  NotifyEvent.
       if (D <> '-') AND (D<>'') then begin
       // CREAR OPCION DEL MENU EN ARCHIVO DE OPCIONES
       if not pgmmst.findkey([p]) then begin
          pgmmst.append;
          pgmmst.FieldByName('ACTIVO').asString   := 'A';
          pgmmst.FieldByName('PGMCODE').asString  := P;
          PgmMst.FieldByName('NOMBRE').asString   := D;
          PgmMst.FieldByName('DPGMCODE').asString := D;
          PgmMst.fieldbyname('MENUNAME').asstring :=  MP ;
          PgmMst.FieldByName('PUBLICO').asString  := 'N';
          PgmMst.post;
          PgmMst.ApplyUpdates(0);
       end;
       // ACTUALIZAR LA OPCION DEL MENU
       if  pgmmst.findkey([p]) then begin
         if Trim(PgmMst.fieldbyname('MENUNAME').asstring) = '' then begin
            PgmMst.Edit;
            PgmMst.fieldbyname('MENUNAME').asstring :=  MP ;
            PgmMst.post;
            PgmMst.ApplyUpdates(0);
         end;

       end;

       end;
    end;
  end;
end;
Responder Con Cita
  #2  
Antiguo 20-05-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Pues vas a tener que hacerlo por RTTI, además que deberás compilar con la información de debug y tus ejecutables serán un poquito (400- 500 kb) más grandes.

El hecho es que ese "TablasGen" una vez compilado se traduce en una dirección de memoria, un puntero, por ello no es fácil de obtener el texto.

La verdad no entiendo bien lo que quieres hacer. Por un lado pones en amarillo el nombre de un método (o procedimiento) pero después dices que quieres el nombre de una "acción" ¿un TAction? no sé, no sé, me ha confundido un poco todo eso.


Creo que Neftali hizo un ejemplo para guardar los elementos de menú en un archivo y recuperarlos, quizás en su web encuentres algo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Desactivar la Opcion "Nuevo", del menu contextual de windows BuenaOnda Varios 5 03-10-2007 05:43:14
Adicionar una opción o un menú desplegable a TODOS los DbGrids del aplicativo???? movorack Varios 8 07-05-2007 15:48:13
Como agregar una nueva opcion en un popup menu de windows? JuanErasmo API de Windows 2 03-04-2006 15:58:55
Cuando se llama un SP dentro de otro SP autom. se hace rollback por error cuxoapat Firebird e Interbase 1 06-04-2005 22:15:50
Opción inhabilitada en el Menu principal del Sist. Anabel Varios 2 20-03-2004 00:26:50


La franja horaria es GMT +2. Ahora son las 22:15:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi