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

Вниз

Перемещение объектов по форме   Найти похожие ветки 

 
Serj ©   (2003-04-13 17:20) [0]

Как заставить объект равномерно перемещаться по форме?
Пробобал изменять координаты left и top, он появляется только в начальной и конечной точках


 
Anatoly Podgoretsky ©   (2003-04-13 17:53) [1]

Менять свойства left и top, другого не дано.
А у тебя ошибка в 17 строке.
Какая гадать не буду, но есть преположения :-)


 
Giemgo   (2003-04-13 18:43) [2]

Достаточно очевидно, что надо использовать таймер с маленьким интервалом и в каждой итерации передвигать объект по чуть-чуть вплоть до конечной точки


 
NA ©   (2003-04-13 21:08) [3]

Наверное, немного лучше будет так:

procedure Move;
var i, Lefttmp : integer;
begin
Lefttmp := Myobject.Left;
for i:=Lefttmp downto 1 do begin
Sleep (1);
Myobject.Left := Myobject.Left - 1
end
end;


 
NA ©   (2003-04-13 21:09) [4]


> Anatoly Podgoretsky © (13.04.03 17:53)
> Менять свойства left и top, другого не дано.
> А у тебя ошибка в 17 строке.


Отчего именно в 17-й? ;)


 
Giemgo   (2003-04-13 21:53) [5]

NA © (13.04.03 21:08)

мне кажется так тормозить будет... хотя фиг знает


 
Giemgo   (2003-04-13 21:59) [6]

NA © (13.04.03 21:08)

мне кажется так тормозить будет... хотя фиг знает


 
Palladin ©   (2003-04-13 22:10) [7]


> появляется только в начальной и конечной точках


кажется у меня тоже есть предположения...

код давай


 
wal ©   (2003-04-13 22:16) [8]

Вместо Sleep"а поставь Application.ProcessMessages


 
NA ©   (2003-04-14 00:40) [9]


> Giemgo (13.04.03 21:53)
> NA © (13.04.03 21:08)
> мне кажется так тормозить будет... хотя фиг знает

А ему, кажется, этого и надо :))))


> wal © (13.04.03 22:16)
> Вместо Sleep"а поставь Application.ProcessMessages

1 - см. выше ;)
2 - ProcessMessages - это хороший стиль, и все такое ;) К тому же, хотя для данного случая оно не особенно критично, но без этой вставки, например, НЕ БУДУТ ДОСТУПНЫ другие контролы, пока не кончится анимация...


P.S. я вапще хотел еще более нагло написать, типа

procedure mmm;
for
with Myobject do for Tag:=Left downto 1 do begin
Sleep (1);
Myobject.Left := Tag
end

но отчего-то не стал... :))))


 
NA ©   (2003-04-14 00:42) [10]


procedure mmm;
begin
for
with Myobject do for Tag:=Left downto 1 do begin
Sleep (1); Left := Tag
end
end


обчепятался весь.


 
NA ©   (2003-04-14 00:45) [11]

совсем уже сплю... :)))

procedure mmm;
begin
with Myobject do for Tag := Left downto 1 do begin
Sleep(1); Left := Tag
end
end;


 
Songoku ©   (2003-04-14 01:04) [12]

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
panel1.perform(WM_SysCommand, SC_DragMove, 0);
end;


 
Serj ©   (2003-04-15 18:31) [13]

> Anatoly Podgoretsky © (13.04.03 17:53)
> Менять свойства left и top, другого не дано.


Это понятно, но как?

> NA © (13.04.03 21:08)
> Наверное, немного лучше будет так:


Почему пишет ошибку, типа:
Undeclared identifier: "Myobject"

> NA © (14.04.03 00:45)
совсем уже сплю... :)))


Тут всё работает, но
Sleep задерживает ход программы, но форма не обновляется, и объект всё так же появляется только в начальной и конечной точках

> wal © (13.04.03 22:16)
> Вместо Sleep"а поставь Application.ProcessMessages


Ура!!! Получилось, мне так и надо было.

Всем спасибо.


 
MsGuns ©   (2003-04-15 20:05) [14]

А нельзя тупо перерисовывать методом Update после каждой "фрикции" ?;))


 
Yanis   (2003-04-15 20:06) [15]

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Button1.perform(WM_SysCommand, $F012, 0);
end;

Проще не бывает!



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

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

Наверх




Память: 0.5 MB
Время: 0.017 c
4-91587
TankMan
2003-01-22 10:07
2003.04.28
Хук на Api


14-91456
Armageddon
2003-04-12 00:04
2003.04.28
DOC формат


14-91503
Sir Alex
2003-04-10 12:05
2003.04.28
Миграция пользователей в Active Directory и Домен


6-91436
Dona
2003-03-06 12:45
2003.04.28
ServerSock - как отправить сообщ. клиенту


3-91142
KMI
2003-04-08 19:45
2003.04.28
Перехват окна пароля БД