Es decir:
En un grupo de CategoryPanels, cerrar aquellos que no fueran seleccionados, mientras que el último seleccionado permanece abierto.
Yo uso esto, por si a alguien le sirve:
delphi
procedure TForm1.cpCollapseExpand(Sender: TObject); var I: Integer; begin for I:= cpgMenu.Panels.Count-1 downto 0 do if TCategoryPanel(cpgMenu.Panels[I]).Name = TCategoryPanel(Sender).Name then TCategoryPanel(cpgMenu.Panels[I]).Expand else TCategoryPanel(cpgMenu.Panels[I]).Collapse; end;
cpgMenu es de la clase TCategoryPanelGroup,
Capturando el evento OnExpand de cada CategoryPanel del grupo y agregando la referencia al método de arriba funciona,
pero debería exisitr alguna forma más automática, con alguna propiedad, supongo.
Ya que esto se me hace casi fuerza bruta.
Tanto Collapse como Expand primero consultan por su estado actual antes de proceder al colapso o expansión del panel, eso hace que ciclo for no se haga lento.