IVAND
20-09-2011, 17:39:54
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
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;
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
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
:confused:
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
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;
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
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
:confused: