Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Recorrer un menu (https://www.clubdelphi.com/foros/showthread.php?t=48961)

Ubed 09-10-2007 13:04:20

Recorrer un menu
 
Hola, vereis yo tengo un menu que quiero recorrer para coger sus Padres e Hijos y meterlos en un Tree, he hecho esto pero no se porque no me deja ejecutarlo, me pueden decir que esta mal??

me sale un error en la parte que esta en rojo, dice algo asi komo k espera un "[" y encuentra un "."

Que puede pasar??

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
var
i,j: integer;
begin
i:=0;
JvCheckTreeView1.Items.Clear;
  while i<=mainmenu1.Items.Count do
    begin
     j:=0;
      while j<=mainmenu1.Items[i].Items.Count do
        begin
           JvCheckTreeView1.Items.Addchild(JvCheckTreeView1.selected, mainmenu1.Items[i].items[j].caption);
            i:=i+1;
        end;
       i:=i+1;
    end;
end;

Lepe 09-10-2007 15:36:32

No tengo Delphi a mano, pero puedo comentar algunas cositas:
- Los bucles van desde el elemento cero hasta Count -1, pero tú te sales del rango, (yo quitaría el igual de la comparación:
Código Delphi [-]
i < mainmenu1.Items.Count
- Con el j pasa lo mismo, quítale el signo igual.
- Usas como contador de recorrido las variables "i" y "j", pero solo incrementas la "i"... de la "j" te has olvidado ... el copy y paste no es bueno :D
- La línea en rojo, debería quedar así:
Código Delphi [-]
j < mainmenu1.Items[i].Count

Eso compara "j" con la cantidad de elementos que tienes en el segundo nivel del menú.

En la ayuda dice que:
Código Delphi [-]
mainmenu1.Items.Items[i]
puede abreviarse como:
Código Delphi [-]
mainmenu1.Items[i]

Saludos

Ivanzinho 09-10-2007 15:40:09

Cita:

Empezado por Ubed (Mensaje 237128)
Hola, vereis yo tengo un menu que quiero recorrer para coger sus Padres e Hijos y meterlos en un Tree, he hecho esto pero no se porque no me deja ejecutarlo, me pueden decir que esta mal??

me sale un error en la parte que esta en rojo, dice algo asi komo k espera un "[" y encuentra un "."

Que puede pasar??

Código Delphi [-]procedure TForm1.FormShow(Sender: TObject);
var i,j: integer;
begin
i:=0;
JvCheckTreeView1.Items.Clear;
while i<=mainmenu1.Items.Count do
begin
j:=0;
while j<=mainmenu1.Items[i].Items.Count do
begin
JvCheckTreeView1.Items.Addchild(JvCheckTreeView1.selected, mainmenu1.Items[i].items[j].caption);
i:=i+1;
end;
i:=i+1;
end;
end;

Tienes que cambiar
Código Delphi [-]
mainmenu1.Items[i].Items.Count
por
Código Delphi [-]
mainmenu1.Items.Items[i].Count

Tambien estás utilizando mal las variables.

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
var   
   i,j: integer;
begin   
   i:=0;   
   JvCheckTreeView1.Items.Clear;      
   while ido      
      begin    
         j:=0;            
         while j < mainmenu1.Items[i].Items.Count do               
            begin                                            
               JvCheckTreeView1.Items.Addchild(JvCheckTreeView1.selected,
                                                  mainmenu1.Items[i].items[j].caption);  
               j:=j+1;
            end;          
         i:=i+1;
      end;
end;

Ivanzinho 09-10-2007 15:44:53

Se me adelanto Lepe :mad:, la próxima vez tendre que andar más rápido :p:)

Un saúdo

Ubed 26-10-2007 10:54:43

Hola, solucione el problema con un objeto de lo Jedi pero ahora lo necesito.
Lo de antes no me sirve porque el numero de menus puede variar asi komo el de los niveles.
Habia pensado en la recursividad pero nuca la e pillado bien, asi estaria bien?

Código Delphi [-]
procedure TForm93.recorrer_menu(menu: tMenuItem);
var
i,j: integer;
begin
while i<=menu.Count do
   begin
      j:=0;
      while j < menu.Items[i].Count do
        begin
          Memo2.lines.add(menu.Items[i].items[j].name);
                recorrer_menu(menu.Items[i].items[j]);
          j:=j+1;
        end;
       i:=i+1;
   end;
end;


La franja horaria es GMT +2. Ahora son las 20:32:45.

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