Главная страница
    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.038 c
3-1097958798
tchn
2004-10-17 00:33
2004.11.21
кто как хранит документы Word в базе (любой)?


14-1099707837
Fktrc
2004-11-06 05:23
2004.11.21
Консольные утилиты


14-1099383516
peypivo
2004-11-02 11:18
2004.11.21
Объявление процедуры внутри процедуры


3-1098296531
ввх
2004-10-20 22:22
2004.11.21
Ошибка при закрытии программы


1-1099837147
sloug
2004-11-07 17:19
2004.11.21
Вертикальная надпись на кнопке





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