![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TImage [D7, WinXP]
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"