Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Menus Vertical (https://www.clubdelphi.com/foros/showthread.php?t=72180)

KingOfDragons 02-02-2011 00:00:56

Menus Vertical
 
Buenas Tardes a todos, disculpen no se si exista ya algun componente para estoy pero hay les va, Quiero que en un sistema vcl me muestre el menu o el toolbar de forma vertical pero que cuando pase con el mouse sobre el lo expanda le pongo un supuesto ejemplo de lo que quiero


Ejemplo menu:

ARCHIVO
CATALAGOS
REPORTE

que al pasar el mouse por catalagos me salga un sub menu pero que tambien recorra el menu reporte que no se pierda con los sub menus

ARCHIVO
CATALAGOS
CLIENTES
PROVEEDORES
ARTICULOS
REPORTE

o tambien cuando se le de click sobre el menu no importa el chiste es que me deje hacer esto gracias a todos

ecfisa 02-02-2011 05:52:47

Hola KingsOfDragons.

Realmente no sé si interpreté correctamente tu planteo...
Pero si la idea es desplegar un submenú cuyos items permitan realizar alguna accíon, una forma es usar un TTreeView y un TPopupMenu.

Ejemplo:
Código Delphi [-]
...
implementation  

(* Items del TreeView *)
procedure TForm1.FormShow(Sender: TObject);
begin
  // (Esta carga la podés hacer en diseño)
  TreeView1.Items.Add(nil,'ARCHIVO');
  TreeView1.Items.Add(nil,'CATALOGO');
  TreeView1.Items.Add(nil,'REPORTE')
  //...
end;

(* Evento OnClick del PopupMenu1 *)
procedure TForm1.PopupItemClick(Sender: TObject);
begin
  // Aqui las acciones que correspondan
  ShowMessage(TMenuItem(Sender).Caption);
end;

(* Evento OnClick del TreeView1 *)
procedure TForm1.TreeView1Click(Sender: TObject);
var
  MI: TMenuItem;
  HT: THitTests;
  CP: TPoint;
begin
  // TomarPosición del Mouse, convertir al cliente
  CP:= TreeView1.ScreenToClient(Mouse.CursorPos);
  // Ver donde se realizó el click
  HT:= TreeView1.GetHitTestInfoAt(CP.X, CP.Y);
  if htOnItem in HT then // Fue sobre un Item
  begin
    PopupMenu1.Items.Clear;  // Borrar Items
    // Asignar valores a MenuItems acorde a selección
    case TreeView1.Selected.Index of
      0:begin   // ARCHIVOS
          MI:= TMenuItem.Create(PopupMenu1);
          MI.Caption:= 'ARCHIVOS 1';
          MI.OnClick:= PopupItemClick;
          PopupMenu1.Items.Add(MI);
          MI:= TMenuItem.Create(PopupMenu1);
          MI.Caption:= 'ARCHIVOS 2';
          MI.OnClick:= PopupItemClick;
          PopupMenu1.Items.Add(MI);
          //...
        end;
      1:begin   // CATALOGO
          MI:= TMenuItem.Create(PopupMenu1);
          MI.Caption:= 'CATALOGO 1';
          MI.OnClick:= PopupItemClick;
          PopupMenu1.Items.Add(MI);
          MI:= TMenuItem.Create(PopupMenu1);
          MI.Caption:= 'CATALOGO 2';
          MI.OnClick:= PopupItemClick;
          PopupMenu1.Items.Add(MI);
          MI:= TMenuItem.Create(PopupMenu1);
          MI.Caption:= 'CATALOGO 3';
          MI.OnClick:= PopupItemClick;
          PopupMenu1.Items.Add(MI);
          //...
        end;
      2:begin   // REPORTE
          MI:= TMenuItem.Create(PopupMenu1);
          MI.Caption:= 'REPORTE 1';
          MI.OnClick:= PopupItemClick;
          PopupMenu1.Items.Add(MI);
          //...
        end;
    //3:...
    end;
    PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);// Mostrar Popup
  end;
end;

...

Quizá exista un componente que lo haga u otro modo más simple de hacerlo... pero es todo lo que se me ocurrió :(

Un saludo.

KingOfDragons 02-02-2011 06:27:25

si es algo asi parecido pero es con buttons :P es para hacer un menu para la pantalla inicial de mi sistema lo quiero hacer con MDIForm y que al acer click en los sub mnus aparesca el form sin que desaparesca el menu principal, se le podria llamar un tree menu normalmente o mejor dicho simpre se ve en las paginas web pero quiero ver si lo puedo hacer en una aplicacion de windows

Gracias

ecfisa 02-02-2011 07:07:51

Hola.
Cita:

si es algo asi parecido pero es con buttons :P es para hacer un menu para la pantalla inicial de mi sistema lo quiero hacer con MDIForm y que al acer click en los sub mnus aparesca el form sin que desaparesca el menu principal, se le podria llamar un tree menu normalmente o mejor dicho simpre se ve en las paginas web pero quiero ver si lo puedo hacer en una aplicacion de windows
¡ Haberlo dicho antes hombre ! ... :)

La solución es bién simple, en el MDIForm poné un TPanel, borrá el Caption y dentro de él los TButtons que quieras.
Luego ajustá el TPanel con Align = alRight o alLeft (vertical) y en el evento OnClick de cada TButton mostras el MDIChild que corresponda.
Los forms MDIChild sólo ocuparán el área libre del MDIForm.

Saludos.

KingOfDragons 02-02-2011 07:12:39

A si eso lo tengo bien claro y no creo la bronca biene cuando hay un objeto o un menu adicional del boton ya puse con popupmenus pero sigue tapandome las demas opciones y es lo que no quiero :P jajaja imaginate que estas viendo un menu de html o un menu web que al darle click estrae otra informacion sin borrar o ensimarse sobre los demas botones

ElKurgan 02-02-2011 07:26:47

A lo mejor también te sirve este artículo del maestro marteens. Es otra posibilidad.

Saludos

KingOfDragons 02-02-2011 07:31:31

Ya me di una idea con lo que comentas como son menus fijos solo voy recorriendo por codigo los botenes gracias


La franja horaria es GMT +2. Ahora son las 13:28:28.

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