Форум: "Media";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизTimage Найти похожие ветки
← →
hogo (2004-06-21 09:51) [0]есть много катринок, при наведении на какую либо загружается другая картинка. необходимо при убирании с нее мышки загрузить прежнюю. как лучше реализовать?
← →
bsFrame (2004-06-21 11:13) [1]Есть пример создания графической кнопки, по работе индеетичной стандартной. Могу сбросить.
← →
hogo (2004-06-22 07:01) [2]
> bsFrame (21.06.04 11:13) [1]
> Есть пример создания графической кнопки, по работе индеетичной
> стандартной. Могу сбросить.
буду очень признателен hogo@mail333.com
← →
grom (2004-06-22 08:36) [3]можно расположить два image друг на друге и при наведении мышки
один скрываеш другой показываеш и наоборот.
← →
hogo (2004-06-22 09:18) [4]необходимо вернуть прежнюю картинку когда мышку убираешь с картинки, а не когда наводишь
← →
-=IVA=- © (2004-06-22 10:17) [5]Попробуй следующее:
Когда наводишь на Image - обрабатывай Image1MouseMove
Когда убираешь мышь с Image, обрабатывай FormMouseMove
← →
Ozone © (2004-06-22 11:35) [6]-=IVA=- © (22.06.04 10:17) [5]
Не правильно, ИМХО
← →
grom (2004-06-22 12:55) [7]все правильно и прекрасно работает
procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Image1.Visible:=true;
Image2.Visible:=false
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Image1.Visible:=false;
Image2.Visible:=true
end;
← →
hogo (2004-06-22 13:08) [8]-=IVA=- [5]
просто вокруг еще много других объектов
и если быстро мышку переместить то на форме событие может не сработать,
я вот в Rx нашел у некоторых компонет событие OnMouseLeave щас разбираюсь как оно реализовано...
← →
-=IVA=- © (2004-06-22 16:59) [9]У меня на форме было куча кнопок, и при наведении на каждую, из массива выбирались ее свойства и выводились в статусбар...
Я мог с любой скоростью мышкой проноситься мимо кнопок и мимо формы, все отлично работало...Даже если пару миллиметров будет между объектами, все равно сработает OnMouseMove на форме...
Что тебе мешает попробовать :)
← →
bsFrame © (2004-06-22 17:32) [10]Вот рабочий код, кидаешь на форму любую картинку задаешь ей события
описаные ниже соответственно и все работает, под исходную картинку
можешь поместить другую.
unit button;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, AppEvnts;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
buttonpress: boolean;
implementation
{$R *.dfm}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TImage(Sender).Visible := False;
Image1.Tag := 1;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TImage(Sender).Visible := True;
Image1.Tag := 0;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (x>32)or(y>32)or(x<0)or(y<0) then TImage(Sender).Visible := True
else
if (Image1.Tag = 1) then TImage(Sender).Visible := False;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
showmessage("Кнопка была нажата");
end;
end.
← →
-=IVA=- © (2004-06-22 17:45) [11]2bsFrame ©:
А если у меня Image меньше или больше 32 ?
← →
bsFrame © (2004-06-23 06:44) [12]>2bsFrame ©:
>А если у меня Image меньше или больше 32 ?
if (TImage(Sender).Height<y)or(TImage(Sender).Width<x)or(x<0)or(y<0)
Тогда наверно так.
← →
Ozone © (2004-06-23 08:45) [13]Все гораздо проще:
TMyImage = class(TImage)
private
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
protected
procedure MouseEnter; dynamic;
procedure MouseLeave; dynamic;
public
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;
< ... >
procedure TMyImage.CMMouseEnter(var Msg: TMessage);
begin
MouseEnter;
end;
procedure TMyImage.CMMouseLeave(var Msg: TMessage);
begin
MouseLeave;
end;
procedure TMyImage.MouseEnter;
begin
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
Self.Picture.LoadFromFile("1.bmp");
end;
procedure TMyImage.MouseLeave;
begin
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
Self.Picture.LoadFromFile("2.bmp");
end;
← →
hogo (2004-06-23 09:20) [14]
> Ozone © [13]
Да вот именно так и надо! спасибо!
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c