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

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

Событие MouseMove и всплывающее окно.


DJones ©   (2008-08-28 16:48:00) 

На главной форме программы расположен объект TImage, при наведении на который курсора мыши должна появляется вторая форма... Подскажите плиз, каким образом реализовать исчезновение второй формы при покидании мыши области, занимаемой TImage


Vlad Oshin   (2008-08-29 10:55:00) [1]

вот, сколько не пробовал - никогда не оставалось окно, как бы не дергал мышой.

type
 TForm1 = class(TForm)
   Image1: TImage;
   procedure Image1MouseEnter(Sender: TObject);
   procedure Image1MouseLeave(Sender: TObject);
 private
    f:tHintWindow;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: tForm1;

implementation
  uses StdCtrls;
{$R *.dfm}

procedure TForm1.Image1MouseEnter(Sender: TObject);
var
 memo:tMemo;
 PT:tPoint;
begin
 f:=THintWindow.Create(form1);
 f.Hide;
 f.Parent:=form1;
 f.Width:=200;
 f.Height:=200;
 GetCursorPos(PT);
 f.Left:=PT.X;
 f.Top:=PT.Y;
 memo:=Tmemo.Create(f);
 memo.Parent:=f;
 memo.Align:=alClient;
 memo.Lines.Add('qqqqqqqqqqqqq');
 memo.Lines.Add('wwwwwwwwwwwww');
 f.Show;
end;

procedure TForm1.Image1MouseLeave(Sender: TObject);
begin
 freeandnil(f);
end;


oldman   (2008-08-29 10:45:00) [2]


> DJones   (29.08.08 10:31) [7]


А чем hint не устраивает?
Не устраивает стандартный, так в инете всяких кузявых навалом.


oldman   (2008-08-29 10:42:00) [3]


> Vlad Oshin ©   (29.08.08 10:40) [10]
>
> > oldman ©   (28.08.08 18:02) [6]
>
> а нафиг работать с феноменальной скоростью?


Навести мышь, почитать параметры и резко уйти с картинки (стрельнуло срочно открыть браузер).
Окно не закроется.


Vlad Oshin   (2008-08-29 10:40:00) [4]


> oldman ©   (28.08.08 18:02) [6]

а нафиг работать с феноменальной скоростью?
а если нужно работать с феноменальной скоростью, то кто будет еще и читать при этом
> некоторые параметры


Palladin   (2008-08-29 10:37:00) [5]

думаю нужно устанавливать hook на мышь


oldman   (2008-08-29 10:34:00) [6]


> Открываю ее как Form2.ShowModal


И думаешь, что после этого события мыши на Form1 отслеживаются?
Ну-ну...


DJones   (2008-08-29 10:31:00) [7]


> То есть, вторая форма чисто информативная.
> Работать с ней нельзя.


Да, туда просто выводится некоторые параметры. (Не хочу занимать ими пространство главной формы) Открываю ее как Form2.ShowModal, при уходе курсора с картинки Form2 не изчезает...
Если это не сильно рационально, подскажите как сделать грамотней...


oldman   (2008-08-28 18:02:00) [8]


> Vlad Oshin ©   (28.08.08 17:57) [5]


Я экспериментировал.
Если работать мышью с феноменальной скоростью - не срабатывает.


Vlad Oshin   (2008-08-28 17:57:00) [9]

procedure TForm1.Memo1MouseEnter(Sender: TObject);
begin
form2.show;
form1.SetFocus;
end;

procedure TForm1.Memo1MouseLeave(Sender: TObject);
begin
 form2.Hide;
end;


oldman   (2008-08-28 17:42:00) [10]


> workbench   (28.08.08 17:32) [3]


Я не знаю его задач, но всплывающая форма есть изврат.

1. Для информации есть hint
2. На всплывшем окне может быть кнопка close. И окно может быть модальным и срабатывать по клику. Даже и не модальным, как на сайтах с просмотром фото - не мешает абсолютно.


workbench   (2008-08-28 17:32:00) [11]


> oldman


может у него что-то вроде image-viewer`а, TImage - маленькие картинки, а на форме у него они уже развёрнуты на всё окно, да мало ли... хз...


oldman   (2008-08-28 17:25:00) [12]


> DJones   (28.08.08 16:48)  


То есть, вторая форма чисто информативная.
Работать с ней нельзя.

А зачем такой изврат?


workbench   (2008-08-28 17:20:00) [13]

Я, конечно, мягко говоря, не гуру, но почему бы и предположить...
Если именно через MouseMove нужно, то на OnMouseMove TImage можно поставить показ 2-й формы, а на OnMouseMove главной формы закрытие 2-й, хотя наверно лучше переделать это обработчику самого TApplication и отдуда исходя из полученных координат делать уже то что нужно...


Наверх

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