Текущий архив: 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.51 MB
Время: 0.06 c