Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

TImage   Найти похожие ветки 

 
Builder   (2004-02-26 13:21) [0]

Здравствуйте,
у меня такая проблемма, нужно чтобы при наведении указателя мыши менялась image1 я пробовал событие OnMouseMove (ну что-то вроде того) но шел постоянный refresh формы, а это не особенно приятно, может есть другие возможности?


 
Gero ©   (2004-02-26 19:56) [1]

Обрабатывай CM_MOUSEENTER и CM_MOUSELEAVE.


 
Mihey ©   (2004-02-26 20:16) [2]

2 Gero:

Точно также кратенько напиши, как это делать. Придётся прописывать обработку в ядре или менять класс или писать потомка.


 
Gero ©   (2004-02-26 20:54) [3]

> Mihey ©   (26.02.04 20:16) [2]

Проблема написать потомка?


 
Mihey ©   (2004-02-26 22:54) [4]

2 Gero:

А оно надо?

Видать чувак делает кнопочку.


 
Gero ©   (2004-02-26 23:02) [5]

> Mihey ©   (26.02.04 22:54) [4]

Вы хотите предложить что-то лучше?


 
Gero ©   (2004-02-26 23:06) [6]

P.S. Если он "делает кнопочку" то написать потомка ему будет очень полезно.


 
Mihey ©   (2004-02-27 01:15) [7]

2 Gero:

В общем, от TImage надо отказываться, так как качества из него не выжмешь.


 
Gero ©   (2004-02-27 07:16) [8]

> Mihey ©   (27.02.04 01:15) [7]

Судя по вопросу, отказываться от TImage еще рано. Для него будет легче написать кнопку-потомка.


 
Nekto   (2004-02-28 00:30) [9]

Да Myhey бы вообще убрал TImage из дельфы!


 
Mihey ©   (2004-02-28 12:25) [10]

2 Nekto:

Да, убрал бы и заменил на нормальный компонент.


 
Nekto   (2004-02-28 17:29) [11]

Не нравится - не ешь. И почисть клаву, у тебя кнапка "2" залипает.


 
Гы   (2004-02-28 17:51) [12]

> Nekto  (28.02.04 17:29) [11]
> И почисть клаву, у тебя кнапка "2" залипает.

гыы.

"2" = "to" = "к"
"2 Nekto" = "к Nekto"


 
Gero ©   (2004-02-28 18:01) [13]

> Mihey ©   (28.02.04 12:25) [10]

Ага.


 
Nekto   (2004-02-28 22:51) [14]

Sorry, не знал!!!


 
M@D   (2004-02-29 11:53) [15]


> Gero ©   (26.02.04 19:56) [1]

А как обработать CM_MOUSEENTER и CM_MOUSELEAVE ?
Что-то я тоже разобраться не могу :(


 
Mihey ©   (2004-02-29 12:52) [16]

2 Gero:

Вот видишь, что наделал твой ответ (про M@D (29.02.04 11:53) [15]).

2 M@D:

Создаёшь потомка TImage. В protected пишешь, например:

procedure WMMouseEnter( var Msg : TWMMouse );   message CM_MOUSEENTER;
procedure WMMouseLeave( var Msg : TWMMouse );   message CM_MOUSELEAVE;

В private пишешь:

FOnMouseEnter : TOnMouseEvent;
FOnMouseLeave : TOnMouseEvent;

В published пишешь:

property OnMouseEnter : TOnMouseEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave : TOnMouseEvent read FOnMouseLeave write FOnMouseLeave;

Ну а в implementation уже пишешь:

procedure TMyNewImage.WMMouseEnter(var Msg: TWMMouse);
begin
 inherited;
 if Assigned(FOnMouseEnter) then FOnMouseEnter(Msg);
end;

procedure TMyNewImage.WMMouseLeave(var Msg: TWMMouse);
begin
 inherited;
 if Assigned(FOnMouseLeave) then FOnMouseLeave(Msg);
end;

Как обычно по-дурацки. Ты лучше расскажи, что ты хочешь сделать, так мы тебе другим советом поможем.


 
M@D   (2004-02-29 14:18) [17]


> Mihey ©   (29.02.04 12:52) [16]


Изменяющуюся кнопку для Autorun"а.
Чтоб откликалась на наведение (сигнал там)...
Этот вариант попробую, спасибо.


 
Mihey ©   (2004-02-29 14:56) [18]

2 M@D:

Если кнопку, то советую посмотреть компонент EzRgnBtn (легко найдёт через поиск на torry.net).


 
M@D   (2004-02-29 15:00) [19]


Mihey ©   (29.02.04 12:52) [


Не вопринимает:
private
 FOnMouseEnter : TOnMouseEvent;
 FOnMouseLeave : TOnMouseEvent;


Ошибка:
Undeclared identifier: "TOnMouseEvent"

Может что-то забыл добаыть в Uses?


 
M@D   (2004-02-29 15:00) [20]


Mihey ©   (29.02.04 12:52) [


Не вопринимает:
private
 FOnMouseEnter : TOnMouseEvent;
 FOnMouseLeave : TOnMouseEvent;


Ошибка:
Undeclared identifier: "TOnMouseEvent"

Может что-то забыл добаыть в Uses?


 
Mihey ©   (2004-02-29 15:48) [21]

Да, точно. До объявления дочернего класс надо поставить:

type
 TOnMouseEvent = procedure(Msg: TWMMouse) of object;


 
Gero ©   (2004-02-29 19:21) [22]

> TOnMouseEvent

Я всегда TNotifyEvent лепил.


 
M@D   (2004-02-29 23:08) [23]


> Mihey ©   (29.02.04 15:48)


Теперь MouseEnter и MouseLeave работают нормально.
Но MouseUp и MouseDown не реагируют... %(


 
Gero ©   (2004-02-29 23:10) [24]

> M@D   (29.02.04 23:08) [23]

Давай свой код.


 
M@D   (2004-02-29 23:13) [25]

procedure TForm1.img_CloseMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 img_Close.Picture.Bitmap := b_Exit_down;
end;

procedure TForm1.img_CloseMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 img_Close.Picture.Bitmap := b_Exit_up;
 Close;
end;

procedure TForm1.img_CloseMouseEnter(Msg: TWMMouse);
begin
 img_Close.Picture.Bitmap := b_Exit_l;
end;

procedure TForm1.img_CloseMouseLeave(Msg: TWMMouse);
begin
 img_Close.Picture.Bitmap := b_Exit_up;
end;CODE>

b_ Bitmap.
А потомок - всё по инструкции...


 
Gero ©   (2004-02-29 23:24) [26]

Не происохдят события MouseUp и MouseDown? Проверь, поставь туда ShowMessage.


 
Mihey ©   (2004-02-29 23:25) [27]

Аналогично, в protected:

   procedure WMLButtonUp( var Msg : TWMLButtonUp );            message WM_LBUTTONUP;
   procedure WMLButtonDown( var Msg : TWMLButtonUp );          message WM_LBUTTONDOWN;
   procedure WMLButtonDblClk( var Message: TWMLButtonDblClk ); message WM_LBUTTONDBLCLK;

В private:

FOnMouseDown: TOnMouseEvent;
FOnMouseUp: TOnMouseEvent;

В published:

property OnMouseDown  : TOnMouseEvent read FOnMouseDown  write FOnMouseDown;
property OnMouseUp    : TOnMouseEvent read FOnMouseUp    write FOnMouseUp;

И в implementation:

procedure TMyNewImage.WMLButtonDown(var Msg: TWMMouse);
begin
 inherited;
 if Assigned(FOnMouseDown) then FOnMouseDown(Msg);
end;

procedure TMyNewImage.WMLButtonUp(var Msg: TWMMouse);
begin
 inherited;
 if Assigned(FOnMouseUp) then FOnMouseUp(Msg);
end;

procedure TMyNewImage.WMLButtonDblClk(var Message: TWMLButtonDblClk);
begin
 // Чёрт его знает, что тут...
end;


 
Gero ©   (2004-02-29 23:55) [28]

> Mihey ©   (29.02.04 23:25) [27]
Зачем все это, OnMouseUp и OnMouseDown в TImage и так есть.


 
Mihey ©   (2004-02-29 23:57) [29]

А чё то не пашет ведь...


 
Gero ©   (2004-03-01 00:05) [30]

> Mihey ©   (29.02.04 23:57) [29]

Ну если "чё то не пашет", то не стоит не задумываясь переписывать заново методы.


 
MBo ©   (2004-03-01 07:12) [31]

http://www.swissdelphicenter.ch/en/showcode.php?id=1068



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.064 c
6-1079925253
vovanx
2004-03-22 06:14
2004.05.16
Какой обработчик запускается когда приходят данные?


6-1080144803
neteditor
2004-03-24 19:13
2004.05.16
Receiveln


1-1083643955
Sirus
2004-05-04 08:12
2004.05.16
Trace into и Source file not found: somefile.pas....


1-1083307919
Master Paleva
2004-04-30 10:51
2004.05.16
Делфи и Флэш


6-1079886834
LAndreyL
2004-03-21 19:33
2004.05.16
Кодировка для отправки почты?