![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Курсор
SnakeAK © (2005-10-13 09:27:00)Как на компонент установить нестандартный курсор?
X9 (2005-10-14 19:21:00) [1]
> Del_programmer © (14.10.05 09:47) [2]
>
> properties->cursor
Да, я влёгкую погорячился :)
Del_programmer (2005-10-14 09:47:00) [2]properties->cursor
X9 (2005-10-14 07:13:00) [3]Если в компоненте нет событий OnMouseEnter и OnMouseLeave, то их нужно дописать, создав потомка от нужного Вам компонента, который будет обрабатывать сообщения CM_MOUSEENTER и CM_MOUSELEAVE (могу ошибаться в идентификаторах сообщений). У TLabel, например, есть вышеуказанные события, в обработчике события Label1.OnMouseEnter нужно прописать смену курсора на нужный Вам, а на OnMouseLeave - возвращение исходного.
Вот пример доработанного компонента TImage (код взят из DelphiWorld - http://delphiworld.narod.ru):
-----------------------------
unit ImageEx;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TImageEx = class (TImage)
private
{ Private declarations }
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var msg: TMessage);
message CM_MOUSEENTER;
procedure CMMouseLeave(var msg: TMessage);
message CM_MOUSELEAVE;
protected
{ Protected declarations }
procedure DoMouseEnter; dynamic;
procedure DoMouseLeave; dynamic;
public
{ Public declarations }
published
{ Published declarations }
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Additional', [TImageEx]);
end;
{ TImageEx }
procedure TImageEx.CMMouseEnter(var msg: TMessage);
begin
DoMouseEnter;
end;
procedure TImageEx.CMMouseLeave(var msg: TMessage);
begin
DoMouseLeave;
end;
procedure TImageEx.DoMouseEnter;
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;
procedure TImageEx.DoMouseLeave;
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
end.
---------------------
Удачи!