Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-1091046073
Сергей Суровцев
2004-07-29 00:21
2004.09.12
И снова о вечном...


1-1093390412
массив
2004-08-25 03:33
2004.09.12
Ищу функции преобразования текста в паскалевые строчки и обратно


1-1093535356
Aleksandr.
2004-08-26 19:49
2004.09.12
Как ListBox заставить реагировать на OnDblClick в пустой области?


6-1089289830
s_ser
2004-07-08 16:30
2004.09.12
Выполнение команд в консоли (для Linuxa)


6-1089277043
jav
2004-07-08 12:57
2004.09.12
HTTPS запрос к серверу...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский