Ennor » 20.09.2005 (Вт) 23:12
Да можно и обычным кнопкам TabStop = False выставить, это не проблема. Проблема в принципе. Понимаешь, когда у тебя на тулбаре как минимум 10 кнопок, а как максимум раза в два-три больше, и тулбаров таких штук пять - восемь, да еще и пользователь может их содержимое неплохо так отредактировать под себя - начинает очень сильно хотеться такой полезной вещи, как инкапсуляция.
Т.е., ты кидаешь на форму CoolBar, в его бэнды вставляешь тулбары, так что юзер сможет их перемещать, как в IE, пишешь универсальный код, который загружает картинки на кнопки по совпадению ключей из коллекций Toolbar.Buttons и ImageList.ListImages (как вариант; я, по крайней мере, ни до чего более универсального не додумался в свое время), по тому же ключу (или еще по чему - дело вкуса, привычки и ориентации) загружаешь тултипы для этих кнопок, попутно их локализуя - все, ты можешь больше вообще ни о чем не думать. Знай лови нажатия кнопок юзером и реагируй соответственно.
Если же ты при таком масштабе работ попытаешься использовать вышеописанный тобой подход, то банальный ресайз станет... нет, это даже не головная боль, это зубная боль будет. Заметь, при использовании штатного контрола он сам полностью обрабатывает для себя это событие. Далее, интерфейс кастомизации ты тоже будешь сам писать? Типа, эту кнопку убрать, а эти три пожалста после вон той - ? И так далее, и тому подобное. Собственно, преимущество компонентного программирования в этом и заключается - fire and forget.
Если вкратце: зачем писать свой тулбар, если уже есть готовый, несравненно более функциональный и гарантированно более легковесный для системы, нежели твой? Зачем?