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
procedure TForm1.FormShow(Sender: TObject);
begin
TreeView1.Items.Add(nil,'ARCHIVO');
TreeView1.Items.Add(nil,'CATALOGO');
TreeView1.Items.Add(nil,'REPORTE')
end;
procedure TForm1.PopupItemClick(Sender: TObject);
begin
ShowMessage(TMenuItem(Sender).Caption);
end;
procedure TForm1.TreeView1Click(Sender: TObject);
var
MI: TMenuItem;
HT: THitTests;
CP: TPoint;
begin
CP:= TreeView1.ScreenToClient(Mouse.CursorPos);
HT:= TreeView1.GetHitTestInfoAt(CP.X, CP.Y);
if htOnItem in HT then begin
PopupMenu1.Items.Clear; case TreeView1.Selected.Index of
0:begin 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 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 MI:= TMenuItem.Create(PopupMenu1);
MI.Caption:= 'REPORTE 1';
MI.OnClick:= PopupItemClick;
PopupMenu1.Items.Add(MI);
end;
end;
PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y); 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.