Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TMainMenu desde código (https://www.clubdelphi.com/foros/showthread.php?t=83780)

elrayo76 29-07-2013 03:00:02

TMainMenu desde código
 
Necesito que me indiquen como se puede crear un MainMenu completo desde código. Tengo una pequeña idea de como hacerlo, pero lo que mas me esta costando es encontrar la forma de poder añadir mas de un submenú.

En mi aplicación tengo algunos menú que tienen 1 submenu, otros que tienen 2 y algunos que tienen mas pero no mucho mas. Por eso lo que quiero es poder crear algo que me facilite la creación de estos menú.

Las opciones generalmente las tomo de la base de datos, aunque ese no es el problema, ya que cada submenú tiene indicado cual es el padre y cada opción también.

Saludos,
El Rayo

ecfisa 29-07-2013 04:35:15

Cita:

Empezado por elrayo76 (Mensaje 464613)
Necesito que me indiquen como se puede crear un MainMenu completo desde código.
...

Hola elrayo76.

Un ejemplo básico de como crear por código, un mainmenu, la barra de menu, ítems y subítems:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  mm : TMainMenu;
  mt, mi, ms : array of TMenuItem;
  i, j ,k: Integer;
begin
  // MainMenu
  mm := TMainMenu.Create(Self);

  // Barra de menu
  for i := 0 to 2 do
  begin
    SetLength(mt, Length(mt) + 1);
    mt[i] := TMenuItem.Create(mm);
    mt[i].Caption := 'Titulo' + IntToStr(i + 1);
    mm.Items.Add(mt[i]);
  end;

  // Items
  for i := 0 to 2 do
    for j := 0 to 4 do
    begin
      SetLength(mi, Length(mi) + 1);
      mi[j] := TMenuItem.Create(mm);
      mi[j].Caption := 'Item' + IntToStr(j + 1);
      mm.Items[i].Add(mi[j]);
    end;

  // SubItems
  for i := 0 to 2 do
    for j := 0 to 4 do
      for k := 0 to 2 do
      begin
        SetLength(ms, Length(ms) + 1);
        ms[k] := TMenuItem.Create(mm);
        ms[k].Caption := 'SubItem' + IntToStr(i + 1);
        mm.Items[i].Items[j].Add(ms[k]);
      end;
end;

Saludos :)

elrayo76 29-07-2013 18:04:42

ecfisa, esta muy bien lo que pones. Pero tengo una duda con respecto a los subitems.

Como harías para agregar más subitems sin necesidad de hace otro ciclo para los nuevos subitems. Mira que un menu puede tener varios subitems que a su vez son contenedores de otros subitems. Además lo que quiero hacer es algo mas genérico porque no se cuantos niveles pueden haber en el manú. Lo que se que no serán muchos porque los limitaré para no hacer interminable la búsqueda de una opción.

Saludos,
El Rayo

ozsWizzard 29-07-2013 18:13:45

Mucha gente lo desaconseja pero lo más genérico que se me ocurre para crear un algoritmo que cree "n" niveles es la recursividad.

ecfisa 29-07-2013 18:55:50

Cita:

Empezado por ozsWizzard (Mensaje 464634)
Mucha gente lo desaconseja pero lo más genérico que se me ocurre para crear un algoritmo que cree "n" niveles es la recursividad.

Hola ozsWizzard.

No veo por que habrían de desaconsejarlo... Yo creo que estas en lo correcto. Si no se conoce la profundidad y niveles que puede alcanzar, la recursividad es la solución natural para este caso.

Saludos. :)

ozsWizzard 29-07-2013 19:30:40

Me lo han comentado compañeros algunas veces. Yo pienso como tú, conste :cool:


La franja horaria es GMT +2. Ahora son las 06:18:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi