Bežne sa podobné situácie riešia tak že každý button je kontrol(odvodený od TControl), ktorý odchytáva správy.
Moje (netradičné) riešenie je nasledovné: Keď kliknem na hociaké miesto na toolbare, odchytí správu toolbar keď toolbar zistí že súradnice kurzoru sa nachádzali nad buttonom zavolá sa event buttonu(button som spravil ako nevizuálnu komponentu takže správy odchytávať nemôže), žiaden button(odvodený od triedy TControl) tam ale v skutočnosti nie je, vpodstate button len nesie informáciu o vlastnostiach ale všetku prácu za neho vykonáva toolbar. Ono to aj funguje.
Problém je v časti vizuálneho návrhu v IDE. IDE mi nechce dovoliť automaticky vytvoriť obslužnú procedúru eventu buttonu pretože button nemá žiaden názov(keďže nie je odvodený od triedy TComponent ktorá obsahuje property Name) IDE si nevie vycucať z prsta na základe čoho má vygenerovať názov obslužnej procedúry. A musím ju teda vytvárať ručne.
Mám taký pocit že to budem musieť celé prerobiť a namiesto TCollection použijem TList, a button odvodím od TComponent.