Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.036 c
14-1099916384
syte_ser78
2004-11-08 15:19
2004.11.21
отслеживание посещаемости сетевой папки


1-1099393539
star.ru
2004-11-02 14:05
2004.11.21
TImage32 и изображение


14-1099575770
DelphiN!
2004-11-04 16:42
2004.11.21
Сокеты на винде тормозят


4-1097318593
TeNY
2004-10-09 14:43
2004.11.21
Нажатие Enter?


3-1098357329
top100
2004-10-21 15:15
2004.11.21
Автоподбор ширины строки в FastReport





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