Главная страница
    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.5 MB
Время: 0.037 c
14-1099572742
syte_ser78
2004-11-04 15:52
2004.11.21
подскажите неумному о EXEC-e


8-1093161619
kblc
2004-08-22 12:00
2004.11.21
MCI help..


8-1093447044
Anderson
2004-08-25 19:17
2004.11.21
Изменение глубины цвета у TIcon.


14-1099488222
John
2004-11-03 16:23
2004.11.21
Помогите решить задачу


1-1099423039
dolphin
2004-11-02 22:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский