Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.01 c
7-91579
BaDeVlad
2003-03-06 19:22
2003.04.28
Как программно свернуть все окна?


3-91180
elf_123
2003-04-06 11:49
2003.04.28
Выполнение запросов


14-91459
Mamai
2003-04-07 22:30
2003.04.28
Модуль


14-91446
Dudao
2003-04-06 05:05
2003.04.28
Интерфейc и Delphi


14-91504
zDEUSz
2003-04-10 16:27
2003.04.28
Таймер?




   Наверх