![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение цвета Label или StaticText [D5, Win95/98]
VinRaider © (2003-01-16 23:37:00)Как сделать так, чтобы при наведении курсора мышки на Label или StaticText он изменял цвет?
Anatoly Podgoretsky (2003-01-22 22:54:00) [1]Не надо копировать из страницы
VinRaider (2003-01-22 22:40:00) [2]Пытаюсь сделать тоже самое используя TDBText. В момент нсталяции
возникает ошибка: Error: Illegel character in input file: ""($A0)
на позициях: Private: Cmmouseleave..., Published: Onmouseleave...
Что неправильно и как его можно сделать? Заранее спасибо.
VinRaider (2003-01-21 22:58:00) [3]
> Романов Р.В. © (21.01.03 22:28)
И за него - тоже!
Романов Р.В. (2003-01-21 22:28:00) [4]
> VinRaider © (21.01.03 22:21)
Юрий Зотов © (25.09.02 20:56)
VinRaider (2003-01-21 22:21:00) [5]Романов Р.В., пью пиво за то, чтобы Коннектий был к тебе благосклонен!
Романов Р.В. (2003-01-20 23:33:00) [6]Посмотри для примера. Можно и не создавать новый компонент, а подменить WindowProc у имеющегося.
Юрий Зотов © (25.09.02 20:56)
1. В обработчиках сообщений нет вызыовов inherited. Подозркваю, что дело может быть в этом (разорвана "родная" цепочка передачи сообшений Parent"ам, что нарушает механизмы VCL).
2. Если делать грамотно, то нужно вводить методы диспетчеризации. Они позволяют наследникам класса безопасно встроить свой код в цепочку обработки события.
TMyImage = class(TImage)
private
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
protected
procedure DoMouseEnter; dynamic;
procedure DoMouseLeave; dynamic;
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;
procedure TMyImage.CMMouseEnter(var Msg: TMessage);
begin
inheried;
DoMouseEnter
end;
procedure TMyImage.CMMouseLeave(var Msg: TMessage);
begin
inherited;
DoMouseLeave
end;
procedure TMyImage.DoMouseEnter;
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self)
end;
procedure TMyImage.DoMouseLeave;
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self)
end;
VinRaider (2003-01-20 22:47:00) [7]Собственно говоря я не понял куда собачить onMouseEnter. Если это
событие Label, то оно должно быть в списке возможных событий(или нет)?
Насчет WM_NCHITTEST - его куда? В события приложения? Если да, то по какому действию. Заранее спасибо.
xn0bys (2003-01-17 08:16:00) [8]Если не поможет обрабатывай WM_NCHITTEST.
Олег (2003-01-16 23:45:00) [9]на событие onMouseEnter Label или StaticText пишешь Label1.Font.Color := clBlue;
а на событие onMouseLeave
Label1.Font.Color := clBlack;
при наведении мыской на этот Лабел, текст будет становится цинего цвета.