Очень благодарен! Всё теперь заработало.. Скажите, а в какой книге можно прочесть про те способы объявления событий, которые здесь приведены?
Хотелось бы детально понять, как это происходит... А то я скопировал это просто, но сути так и не понял.
И ещё - а можно ли также сделать в компоненте TSpeedButton - это будет работать, также как с TButton?
Меня спрашивали, зачем я меняю эти события, я поясню:
1) Кнопки. Для экономии места на экране на одну кнопку можно кроме самого действия по её нажатию, прицепить какие-либо настройки этого действия. Например, если есть кнопка, выбирающая кисть для рисования, то для пользователя будет удобно выбирать ширину кисти вращением мышки над этой кнопкой, а при нажатии - будет выбрана кисть с этой шириной. Чтобы не запутаться - вращение колеса мышки сопровождается сменой изображения диаметра кисти на этой кнопке.
2) Таблица с текстом или текстовый редактор. Здесь ещё интереснее.
Например, мой грид отображает закладки (на каком-то тексте). Закладки входят в группы, в виде дерева (как в интернет-браузере). И закладок много..., несколько сотен. Пользователю долго их прокручивать, потому что колесо мышки крутит (в стандартном событии) строки таблицы только по одной.
Я делю поле грида (по вертикали, условно) на несколько областей, например 3. Центральное, допустим, занимает 4/6 от ширины площади грида. Левая и правая область - по 1/6 ширины. И когда пользователь вращает колесо мышки, держа указатель около середины грида, он скроллируется построчно. Когда ближе к правому краю - постранично.
А когда около левого края - указатель грида "прыгает" по узлам дерева.
С текстовым редактором такая же история. Листать построчно, или постранично, немного сместив указатель мышки по экрану - очень удобно. Пользователи благодарили меня за эту возможность, вот.
|