FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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; |
#2
|
||||
|
||||
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. |
|
|
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 |
|