Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Media";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.04 c
7-1081426783
teapot
2004-04-08 16:19
2004.05.16
выход из системы - програмно


11-1069064483
Revolter
2003-11-17 13:21
2004.05.16
Помогите с прозрачностью


1-1083235947
ArtIcons
2004-04-29 14:52
2004.05.16
Изменить иконку программы


1-1083163974
Andrew_Rostov
2004-04-28 18:52
2004.05.16
Чтение данных из текстового файла


1-1083146791
karls
2004-04-28 14:06
2004.05.16
Каким свойствам убрать ограничение с memo?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский