Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TImage [D7, WinXP]


Страницы:   1 2

Builder ©   (2004-02-26 13:21:00) 

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


MBo   (2004-03-01 07:12:00) [1]

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


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

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

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


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

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


Gero   (2004-02-29 23:55:00) [4]

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


Mihey   (2004-02-29 23:25:00) [5]

Аналогично, в 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:24:00) [6]

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


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

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:10:00) [8]

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

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


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


> Mihey ©   (29.02.04 15:48)


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


Gero   (2004-02-29 19:21:00) [10]

> TOnMouseEvent

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


Mihey   (2004-02-29 15:48:00) [11]

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

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


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


Mihey ©   (29.02.04 12:52) [


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


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

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


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


Mihey ©   (29.02.04 12:52) [


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


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

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


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

2 M@D:

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


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


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


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


Mihey   (2004-02-29 12:52:00) [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 11:53:00) [17]


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

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


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

Sorry, не знал!!!


Gero   (2004-02-28 18:01:00) [19]

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

Ага.


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

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

гыы.

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо