| Код | procedure TfrmMain.CollapseAll(CatPanel: TCategoryPanel); var i: integer; CP: TCategoryPanel; begin CP := (FindComponent('CategoryPanel' + inttostr(i)) as TCategoryPanel); for i = 1 to CategoryPanelGroup1.Panels.Count do CP.Collapsed = (not (CP = CatPanel)); end;
|
На каждую из панелей вешаем событие:
| Код | procedure TfrmMain.CategoryPanelExpand(Sender: TObject); begin CollapseAll(Sender as TCategoryPanel); end;
|
От количества панелей ничего не зависит. Главное чтобы нумерация панелей шла от CategoryPanel1 до CategoryPanelN, где N - количество панелей, без скачков через одну. Т.е. вариант типа CategoryPanel1, CategoryPanel3 не прокатит, нужно чтобы обязательно была ещё и CategoryPanel2.
Добавлено через 2 минуты и 37 секунд Даже проще. На каждую панель событие:
| Код | procedure TfrmMain.CategoryPanelExpand(Sender: TObject); var i: integer; CP: TCategoryPanel; begin CP := (FindComponent('CategoryPanel' + inttostr(i)) as TCategoryPanel); for i = 1 to CategoryPanelGroup1.Panels.Count do CP.Collapsed = (not (CP = (Sender as TCategoryPanel)));
|
|