Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Перемещение TPanel за курсором мышки влеов и вправо   Найти похожие ветки 

 
Developerr   (2005-11-18 16:46) [0]

Добрый день.
Ув. мастера, подскажите такую вещь. У меня есть 2 компонента TPanel (Panel1 и Panel2), при этом один компонент находится внутри другого.
Мне нужно чтобы Panel2 перемещался за курсором мышки и при этом если Panel2.Left=0 или Panel2.Left=Panel1.Left-Panel2.Width, то Panel2 переставал двигаться. Все бы ничего, только при достижении Panel2.Left позиции 0, Panel2 прилипает к Panel1 и перестает двигаться.
Т.е. я хочу чтобы получилось что-то подобное Арканоиду.

Делаю я так:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
код программы

 if (Panel2.Left>0) and (Panel2.Left<Panel1.Left-Panel2.Width) then
 Panel2.Left:=Panel2.Left-1;
end;


Вчем проблема? Надеюсь, что не в ДНК :-))

Спасибо.


 
Developerr   (2005-11-18 17:18) [1]

Прошу прощения ошибся в приведеннос коде. Вместо
Panel2.Left:=Panel2.Left-1;
Нужно
Panel2.Left:=Mouse.CursorPos.X;


 
злобная танька ©   (2005-11-19 13:29) [2]

замени
if (Panel2.Left>0) and (Panel2.Left<Panel1.Left-Panel2.Width) then
на
if Panel2.Left < Panel1.Left - Panel2.Width then


 
злобная танька ©   (2005-11-19 13:31) [3]

вместо Mouse.CursorPos.X
юзай обычные координаты. в событии онмаусмува на панелях можешь запоминать координаты а в таймере юзать их.


 
Developerr ©   (2005-11-20 13:16) [4]

Вот более менее нормальный вариант

procedure TForm1.Panel1MouseMove(Sender: TObject;
 Shift: TShiftState; X, Y: Integer);
begin
if Panel2.Left < Panel1.Width-Panel2.Width then
   Panel2.Left:=X
else
  Panel2.Left:=Panel1.Width-Panel2.Width;
end;

но он тоже не совсем устраивает, т.к. при движении мыши вправо Panel2 вылазит за пределы видимости, а только потом возвращается в крайнюю правую позицию.



Страницы: 1 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.048 c
6-1122536583
Курдль
2005-07-28 11:43
2005.12.18
Client/ServerSockets. Как найти все сокеты, активные в сети?


1-1132732615
Ega23
2005-11-23 10:56
2005.12.18
override-функция, она уже virual?


14-1133036180
Доктор Семенюк
2005-11-26 23:16
2005.12.18
Родину сняли с выборов


2-1133328961
Laymer
2005-11-30 08:36
2005.12.18
TSQLConnection


14-1133098896
Alexis
2005-11-27 16:41
2005.12.18
На borland.com только Delphi 2005 .NET?