Ver Mensaje Individual
  #2  
Antiguo 02-02-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-02-2011 a las 06:03:10.
Responder Con Cita