Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Как отбросить форму от курсора при наведении на форму   Найти похожие ветки 

 
markers ©   (2004-11-10 09:40) [0]

Как отбросить форму от курсора при наведении на форму, а когда курсор уйдет с с позииции где раньше была форма переместить её назад?
Плиз!


 
KilkennyCat ©   (2004-11-10 09:43) [1]

следить за координатами курсора... сравнивать с координатами и размерами формы... изменять свойства Left и Тоp у формы...


 
markers ©   (2004-11-10 09:55) [2]

это понятно а но следить то нужно глобально, Таймер делать чтоли?


 
KSergey ©   (2004-11-10 09:56) [3]

> [2] markers ©   (10.11.04 09:55)
> это понятно а но следить то нужно глобально,

Глобально - в каком смысле? При перемещении мыши - пруть сообщения. Зачем таймер?


 
markers ©   (2004-11-10 10:00) [4]

Чуть по точнее можно, плиз;)


 
begin...end ©   (2004-11-10 10:10) [5]

markers ©   (10.11.04 10:00) [4]

WM_MOUSEMOVE ?


 
NAlexey ©   (2004-11-10 10:52) [6]

Как тебе это:

const
 Accel = 50;
 Bias  = 20;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 Dir: Integer;
 FWidth, FHeight: Integer;
 RandomLeft, RandomTop: Integer;
 I: Integer;
begin
 with Sender as TWinControl do
 begin
   Dir := Random(4);
   case Dir of
     0:
       begin
         FWidth := Screen.Width - (Left + Width);
         FHeight := Screen.Height - (Top + Height);
         if FWidth < 0 then
           FWidth := 1;
         if FHeight <  0 then
           FHeight := 1;
         RandomLeft := Random(FWidth + 1);
         RandomTop := Random(FHeight + 1);
         for I := 0 to RandomLeft do
         begin
           if I mod Bias <> 0 then
             Continue;
           Left := Left + Bias;
           if RandomTop > 0 then
           begin
             Top := Top + Bias;
             Dec(RandomTop, Bias);
           end;
           if I mod Accel = 0 then
             Sleep(1);
         end;
         if RandomTop > 0 then
           for I := 0 to RandomTop do
           begin
             if I mod Bias <> 0 then
               Continue;
             Top := Top + Bias;
             if I mod Accel = 0 then
               Sleep(1);
           end;
       end;
     1:
       begin
         FWidth :=  Left;
         FHeight := Top;
         if FWidth < 0 then
           FWidth := 1;
         if FHeight <  0 then
           FHeight := 1;
         RandomLeft := Random(FWidth + 1);
         RandomTop := Random(FHeight + 1);
         for I := 0 to RandomLeft do
         begin
           if I mod Bias <> 0 then
             Continue;
           Left := Left - Bias;
           if RandomTop > 0 then
           begin
             Top := Top - Bias;
             Dec(RandomTop, Bias);
           end;
           if I mod Accel = 0 then
             Sleep(1);
         end;
         if RandomTop > 0 then
         for I := 0 to RandomTop do
         begin
           if I mod Bias <> 0 then
             Continue;
           Top := Top - Bias;
           if I mod Accel = 0 then
             Sleep(1);
         end;
       end;
     2:
       begin
         FWidth := Screen.Width - (Left + Width);
         FHeight := Top;
         if FWidth < 0 then
           FWidth := 0;
         if FHeight <  0 then
           FHeight := 0;
         RandomLeft := Random(FWidth + 1);
         RandomTop := Random(FHeight + 1);
         for I := 0 to RandomLeft do
         begin
           if I mod Bias <> 0 then
             Continue;
           Left := Left + Bias;
           if RandomTop > 0 then
           begin
             Top := Top - Bias;
             Dec(RandomTop, Bias);
           end;
           if I mod Accel = 0 then
             Sleep(1);
         end;
         if RandomTop > 0 then
           for I := 0 to RandomTop do
           begin
             if I mod Bias <> 0 then
               Continue;
             Top := Top - Bias;
             if I mod Accel = 0 then
               Sleep(1);
           end;
       end;
     3:
       begin
         FWidth :=  Left;
         FHeight := Screen.Height - (Top + Height);
         if FWidth < 0 then
           FWidth := 0;
         if FHeight <  0 then
           FHeight := 0;
         RandomLeft := Random(FWidth + 1);
         RandomTop := Random(FHeight + 1);
         for I := 0 to RandomLeft do
         begin
           if I mod Bias <> 0 then
             Continue;
           Left := Left - Bias;
           if RandomTop > 0 then
           begin
             Top := Top + Bias;
             Dec(RandomTop, Bias);
           end;
           if I mod Accel = 0 then
             Sleep(1);
         end;
         if RandomTop > 0 then
           for I := 0 to RandomTop do
           begin
             if I mod Bias <> 0 then
               Continue;
             Top := Top + Bias;
             if I mod Accel = 0 then
               Sleep(1);
           end;
       end;
   end;
   if Left < 0 then
     Left := 0;
   if Top < 0 then
     Top := 0;
   if (Top + Height) > Screen.Height then
     Top := Screen.Height - Height;
   if (Left + Width) > Screen.Width then
     Left := Screen.Width - Width;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Randomize;
 FormStyle := fsStayOnTop;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
1-1099754818
gigameg
2004-11-06 18:26
2004.11.21
выравнивание по ширене(justify) в memo или richedit?


1-1099749674
Pavia
2004-11-06 17:01
2004.11.21
Редактор мат формул.


3-1098430766
Aser
2004-10-22 11:39
2004.11.21
Как выбрать все из таблицы 1 и все из таблицы 2


1-1099488621
Koala
2004-11-03 16:30
2004.11.21
Что то у меня с DLL не получается...


1-1099484746
dolphin
2004-11-03 15:25
2004.11.21
Создание курсора