Ver Mensaje Individual
  #1  
Antiguo 20-09-2011
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 524
Reputación: 22
IVAND Va por buen camino
Creacion de menus dinamicos desde una base de datos firebird

Hola a todos

Ya se que es un tema hablado muchas veces , pero tengo solo una duda
Tengo un menu que obviamente tiene las opciones de mi sistema , quiero personalisar ese menu con los llamados accesos directos , pues bien hasta ahi todo esta bien , lo grabo en una tabla de la base de datos y cuando salgo del menu tengo que volver a recuperar esos datos para volver a armar el menu de accesos directos , lo consigo bien , pero en su opcion de onclik tengo un error que espero ustedes me ayuden con sus conocientos

Ejemplo

procedure PopupMenuItemsClick(Sender: TObject); // defino


Código Delphi [-]
procedure TFnew_menu.FormCreate(Sender: TObject);
var
  Index: Integer;
begin
  AModeSelUser := False;
// Ejecuto y creo el menu de una  tabla 
  with Listar_menu do
  begin
    close;
    ParamByName('key_caja').Value := DM_INV_FAC.Id_caja;
    Open;
  end;
  if Listar_menu.RecordCount > 0 then
  begin
    Listar_menu.First;
    while not Listar_menu.eof do
    begin
      NewItem := TJfMenuItem.Create(JfPanelMenu1); // 
      JfPanelMenu1.Items.Add(NewItem);  // 
      NewItem.Name := Listar_menu.fieldByname('Nombre_menu').AsString;
      NewItem.Caption := Listar_menu.fieldByname('Detalle_menu').AsString;
      NewItem.Privilege.Id := Listar_menu.fieldByname('privilegio').value;
      NewItem.Tag := index;
      NewItem.OnClick := PopupMenuItemsClick; // asigno la acccion de onclik
      Index := Index + 1;
      Listar_menu.Next;
    end;
  end;
  Listar_menu.Close;
end;




Código Delphi [-]
procedure TFnew_menu.PopupMenuItemsClick(Sender: TObject);
begin
 (Sender as TJfMenuItem).OnClick(JfMenuItem147); // aqui es donde esta el problema

si lo asigno asi esto funciona perfecto , pues JfMenuItem147 es un Tobject ,
puedo obtener el nombre del menu , pero no se como asignar su accion de Onclik 

 (Sender as TJfMenuItem).OnClick((Sender as TJfMenuItem).name); 
me da un error que debe ser un Tobject y le estoy pasando un Tobjectname
 

end;


MI pregunta es

Como puedo realizar en tiempo de ejecucion asignarle el evento onclik para que se ejecute cada opcion correctamente


Gracias por su tiempo


Nota: ahora lo que hago es
Código Delphi [-]
    if name = 'JfMenuItem18' then JfMenuItem18.Onclick(sender);
    if name = 'JfMenuItem93' then JfMenuItem93.Onclick(sender);
    if name = 'JfMenuItem260' then JfMenuItem260.Onclick(sender);
    if name = 'JfMenuItem242' then JfMenuItem242.Onclick(sender);
    if name = 'JfMenuItem250' then JfMenuItem250.Onclick(sender);
    if name = 'JfMenuItem261' then JfMenuItem261.Onclick(sender);
    if name = 'JfMenuItem262' then JfMenuItem262.Onclick(sender);
Pero claro no es lo correpto pero funciona
__________________
IVAND
Responder Con Cita