| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Замена рисунка кнопки при наведении |
| Автор: Баг 17.4.2004, 10:49 |
| Где только не искал, везде одна фига... Нужно сделать кнопки, которые становились выпуклыми/подсвечивались при наведении, не имели бы рамки (SpeedButton Flat'овый не подходит, т.к. приобретает рамку при наведении). Пробовал CM_MOUSEENTER и CM_MOUSELEAVE, но они почему-то возникают многократно. Может быть самым разумным будет обработать эту многократность, или есть другие способы? |
| Автор: <Spawn> 17.4.2004, 11:40 |
| CM_MOUSEENTER, CM_MOUSELEAVE возникают как им положено и вовсе не многократо. Привел бы ты лучше код - скорее всего у тебя ошибка |
| Автор: Баг 17.4.2004, 13:03 |
| и вправду все в порядке, просто я использовал showmessage для проверки Код для тех, кто обеспокоен подобной проблемой: unit MyImage; interface uses Classes, Extctrls, Controls, Messages; type TMyImage = class(TImage) private FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; published property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; procedure Register; implementation procedure Register; begin RegisterComponents('myComponents', [TMyImage]); end; { TImageEx } procedure TMyImage.CMMouseEnter(var Message: TMessage); begin if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure TMyImage.CMMouseLeave(var Message: TMessage); begin if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; end. |