Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.307
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Utiliza la función NewItem de Delphi:

function NewItem(const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: THelpContext; const AName: string): TMenuItem;

Sería algo así (de todas formas en la ayuda de delphi tienes ejemplos):

Código Delphi [-]
   Item := NewItem('Opcion A.3.1', 
                           ShortCut(Word('A'), [ssCtrl, ssShift, ssAlt]),
                           False{MenuChecked}, 
                           True, 
                           OptA31MenuItemClick, 0, '');
   Item.Tag := 1;
   // imagen desde un recurso
   Item.Bitmap.LoadFromResourceName(HInstance, RES_OPTA31);  
   // Añadirlo debajo de A.3 (debes accer a ese elemento del menú)
   OptA3.Add(BMenuItem);
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 04-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
La verdad es que tiene truco jejeje;

Código Delphi [-]
var a,b:TMenuItem;
begin
a := TMenuItem.Create(form1);
a.Caption:= 'hola';

b:= TMenuItem.Create(form1);
b.Caption := 'hola dentro';

a.Add(b);
a1.Add(a);
el 'b' está dentro del 'a', simplemente hay que hacer a.Add(b) y automaticamente lo mete dentro.

Curioso, si señor.

Edito: a1 es un menu creado en diseño, para no complicarme mucho la vida....
de esta forma queda: "b" dentro de "a", y "a" dentro de "a1"


Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 04-08-2005 a las 10:23:59.
Responder Con Cita
  #3  
Antiguo 24-08-2005
pepetonic2001 pepetonic2001 is offline
Registrado
 
Registrado: ago 2005
Posts: 4
Poder: 0
pepetonic2001 Va por buen camino
Menu en tiempo de ejecución

La solución que me ofrece Lepe me funciona cuando conozco los items y se crean antes, pero los items los tengo que crear a partir de una tabla, si la longitud de un campo es 1, entonces es de nivel Opcion A, si es 2 entonces es de nivel Opcion A.1, si es 3 entonces es de nivel Opcion A.3.1, etc.

¿Alguien me puede seguir ayudando?

Gracias de antemano

Opción A
....Opción A.1
....Opción A.2
....Opción A.3
........Opción A.3.1
........Opción A.3.2
Responder Con Cita
  #4  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Pide una consulta ordenada por nivel, así ya puedes crear primero el A.1 y haces un bucle recorriendo esa consulta, mientras que el nivel sea el mismo, añades dentro, y cuando el nivel sea distinto, saltas de MenuItem.

Necesitarás una variable NivelActual:integer, para comparar el nivel del elemento que quieres crear con el último que se creó.

Tambien te será util una variable ElPadre:Tmenuitem, que al cambiar de nivel, lo vas cambiando, y te sirves de él para añadir dentro los submenus.


Código Delphi [-]
var ElPadre:Tmenuitem;
     NivelActual : integer;
begin
  nivelactual := 1;
  elpadre := MenuPpal; //  es un menú existente.
  while not query1.eof do
  begin
     a := TMenuItem.Create(form1);
     a.Caption:= query1.fieldbyname('Caption').AsString;
     elpadre.Add(a);

     if query1.fieldbyname('nivel').asInteger - nivelactual > 0  then
     // es un nuevo SubMenu
        elpadre := a

    query1.next;
end;

Espero que me haya explicado.

Si necesitas más ayuda, dinos exactamente que guardas en esa tabla, todos los campos y definición de cada uno.

Un saludo
Responder Con Cita
  #5  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
la idea es buena, pero tiene un fallo, justo donde dice "es un nuevo Submenu" se produce un desfase y no se crean bien. Supongo que tú si tienes forma de saber si es un MenuItem que hay que asignarle el OnClick o si es simplemente un elemento para desplegar un Submenu.

Un saludo
Responder Con Cita
  #6  
Antiguo 26-08-2005
pepetonic2001 pepetonic2001 is offline
Registrado
 
Registrado: ago 2005
Posts: 4
Poder: 0
pepetonic2001 Va por buen camino
Gracias Lepe, entiendo tu explicación, pero no consigo ponerlo en marcha.

Tengo un campo que se llama Tipo, tipo caracter, allí puede haber 1, 11, 111,112,113,12,121,123,13,131,132, ect.


Si el valor es 1 -> Es una opción principal del Menú, es Opción A
Si el valor es 11 -> Es una subopción del Menú, es Opción A.1
Si el valor es 12 -> Es una subopción del Menú, es Opción A.2
Si el valor es 121 -> Es una subopción del Submenú es Opcion A.2.1
Si el valor es 13 -> Es una subopción del Menú, es Opción A.3
Si el valor es 131 -> Es una subopción del Submenú es Opcion A.3.1
Si el valor es 132 -> Es una subopción del Submenú es opcion A.3.2
y así sucesivamente,
Muchas gracias por tu ayuda,



Opción A
....Opción A.1
....Opción A.2
........Opción A.2.1
....Opción A.3
........Opción A.3.1
........Opción A.3.2
Responder Con Cita
  #7  
Antiguo 26-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Pues nos estamos mareando, y al menos yo todavía no sé exactamente las especificaciones.

1.- Que profundidad máxima de niveles existe.
2.- Cuantos elementos de menú por cada nivel hay como máximo.
3.- Cuantos menús de este tipo vas a confeccionar, hasta el momento solo hablamos de un menú el Opcion A, pero, ¿existe una Opcion B, Opcion C ?
4.- ¿Tienes posibilidad de cambiar los tipos de campo? Con un campo 1, 11,111,121, 131, es muy lioso. Hay formas mucho más faciles.

Si aportas más datos, mejor que mejor.

Un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:36:56.


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
Copyright 1996-2007 Club Delphi