Форум: "Основная";
Текущий архив: 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