Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Menu Dinamico Utilizando Componente dxnavbar (https://www.clubdelphi.com/foros/showthread.php?t=82015)

steelha 15-01-2013 18:23:02

Menu Dinamico Utilizando Componente dxnavbar
 
Saludos tiempo sin preguntar por aca :)
Mi caso es el siguiente encontre el componente dxnavbar muy bueno para lo que deseo, un menu dinamico que se posiciona donde deseo. Lo que deseo es que cuando un usuario x de login correcto cargue un menu personalizado de este desde una BD. el caso es que no encuentro la forma de como crear los grupos y los items luego los link en tiempo de ejecucion

vi un ejemplo donde utilizan lo siguiente

Código Delphi [-]
Uses dxnavbarcollns;
...
...
var
group : tdxnavbargroup;
item   : tdxnavbaritem;

group := dxnavbar.group.add; // Aca no me sale la opciones group.add 
group.caption := 'Grupo A';   // estas si
group.smallimageindex := 0;


como explique la opcion de group.add o item.add no me sale por lo que el programa me da un error.
si conocen la forma de como hacerlo o alguien conoce como funciona favor contactar necesito resolver este problema con prioridad 911.

Ando utilizando delphi 7, mysql, componentes devexpress
(No puedo programar con presion :( )

maeyanes 15-01-2013 19:24:42

Hola...

¿Ya viste en el Centro de soporte de DevExpress? Ahí puedes encontrar varios ejemplos de como solucionar tu problema.

También estos componentes traen una ayuda muy completa con ejemplos y todo...



Saludos...

steelha 15-01-2013 19:32:03

Gracias por la respuesta y si he andado todo y nada ni en san google he encontrado lo que deseo

maeyanes 15-01-2013 20:05:08

Hola...

¿Y se puede saber exactamente cuál es el error que obtienes?



Saludos...

steelha 15-01-2013 23:02:51

Este es el codigo donde obtengo el error

Código Delphi [-]
Procedure Tfrmprincipal.Cargar_Opciones;
var i,j : Integer;
    grupo : TdxNavBarGroup;
    item  : TdxNavBarItem;
begin
  i:= 0;
  j:= 0;

  dmConexiones.sqlMenuGrupo.Close;
  dmConexiones.sqlMenuItems.Close;
  dmConexiones.sqlMenuGrupo.Open;
  dmConexiones.sqlMenuItems.Open;

    //Crear el nuevo grupo
    for i:= 1 to dmConexiones.sqlMenuGrupo.RecordCount do
    begin
      grupo := TdxNavBar.Groups.Add; //aca Method identifier expected 
      grupo.Caption := dmConexiones.sqlMenuGrupogrupo_nombre.Value;
      grupo.SmallImageIndex := 0;
      grupo.LargeImageIndex := 0;

      //Crear los items dentro del grupo

      for j:= 1 to dmConexiones.sqlMenuItems.RecordCount do
      begin
        item := dxNavBarDragObject.NavBar.Items.add;
        item.Caption := dmConexiones.sqlMenuItemsItem_Nombre.Value;
        item.SmallImageIndex := 0;
        item.LargeImageIndex := 0;
      end;
    end;
  dmConexiones.sqlMenuGrupo.Close;
  dmConexiones.sqlMenuItems.Close;

{    i, j : integer;
  AItem : TdxNavBarItem;
begin
  for j := 0 to 4 do
  begin
    dxNavBarRecursos.Groups.Add.Caption := 'Group ' + IntToStr(j);
    for i := 0 to 4 do
    begin
      AItem := dxNavBarRecursos.Items.Add;
      AItem.Caption :=  'Group ' + IntToStr(j) + '  Item ' + IntToStr(i);
      AItem.OnClick := OnItemClick;
      AItem.Name := 'ItemName' + IntToStr(j) + IntToStr(i) ;
      dxNavBarRecursos.Groups.Items[j].CreateLink(AItem);
      end;
  end;}
end;

Me he dado cuenta que cuando presiono contro+space para obtener las propiedades no me sale groups

maeyanes 16-01-2013 16:49:43

Hola...

El problema es que estás tratando de llamar un método usando el identificador de clase (TdxNavBar) y no un objeto instanciado de esa clase.

Código Delphi [-]
var
  grupo : TdxNavBarGroup;

begin
  grupo := dxNavBar1.Groups.Add; // <- se usa un objeto y no la clase
  // Configurar el grupo...
end;


Saludos...

steelha 17-01-2013 16:04:53

Muchas gracias por la ayuda Maeyanes, luego de eso pude corregir el error aca pongo el codigo de la correccion por si le sucede a alguien mas en el futuro

Código Delphi [-]
     
     menu.Groups.Add.Caption := dmConexiones.sqlMenuGrupogrupo_nombre.Value;
     grupo := TdxNavBar.Groups.Add; //anteriormente daba error Method identifier expected 

        for j:= 0 to (dmConexiones.sqlMenuItems.RecordCount-1) do
        begin
          //Crear los items dentro del grupo
          item := menu.Items.Add;
          item.Caption := dmConexiones.sqlMenuItemsItem_Nombre.Value;
          item.OnClick := OnItemClick;
          item.Name    := dmConexiones.sqlMenuItemsItem_Id.Value;
          menu.Groups.Items[i].CreateLink(item);
          item.LargeImageIndex :=0;
          item.SmallImageIndex :=0;

steelha 17-01-2013 16:12:53

Bueno, ya resolvi ese problema ahora me queda la incertidumbre de como hare para que cada link me abra la patalla adecuada y eso si que no tengo ni idea de como hacerlo. Si alguien tiene algun conocimiento de ello por favor ayudar

steelha 17-01-2013 22:34:31

Por si no fui especifico lo que deseo es poder abrir las ventanas correspondiente a cada link que le de click, pero como le asigno a los link que ventana deben abrir

maeyanes 17-01-2013 22:51:57

Hola...

Cada elemento de un grupo debe tener un evento OnClick, ahí debes poder programar que formulario quieres que se muestre al hacer click.


Saludos...

steelha 18-01-2013 03:40:27

Ummmm.......ummmmmmmm....... el problema es que el menu realizado para el navbar es creado desde una base de datos el evento onclick se crea al principio para poder asignarse a cada grupo cuando se crea dinamicamente segun ejemplo encontrado pero es el mismo para todos .... (hay ya como que me duele la cabeza). vere si guardando en la db un campo Ventana con el nombre de ella puedo hacerlo pero el tag es int no guarda text.

steelha 25-01-2013 17:49:21

Muchas gracias ya pude solucionar el problema

IVAND 13-02-2024 18:59:49

Hola , puedes indicar como lo solucionastes por favor

alfaadamegmail 16-04-2024 01:39:01

Menu Dinamico
 
Código Delphi [-]
procedure TfrmMenu.Ejecuta(Sender: TObject);
begin
  if Sender is TDxNavBarItem then
    Begin
      // Acciones a ejecutar
    End;
end;

Procedure  TfrmMenu.CreaMenu(xmlFile: String);
begin
  grupo := Barra.Groups.Add;
  grupo.Caption := 'Lo que quieres que muestre como titulo';
  grupo.Hint := Grupo.Caption;
  for inicio=0 to TotalItems
    begin
      item := ((Barra.Items.Add) as TDxNavBarItem);
      item.Caption := 'Lo que quieres que diga';
      item.Hint := 'NombreDeForma';
      Item.OnClick :=  Ejecuta;
    end;
End;

Ejemplo muy basico, pero mas o menos es asi.


La franja horaria es GMT +2. Ahora son las 21:23:15.

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