Главная страница
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.042 c
1-1099846249
InfMag
2004-11-07 19:50
2004.11.21
Выбираем только то, что нужно


14-1098946507
1008
2004-10-28 10:55
2004.11.21
Я уж и забыл, что такое от души посмеяться


4-1097348954
Sphinx
2004-10-09 23:09
2004.11.21
Таймер


1-1099854492
snake1977
2004-11-07 22:08
2004.11.21
Смешивание цвета


11-1077803384
ALeXXXX
2004-02-26 16:49
2004.11.21
Немогу понять как добовлять items в TreeView?