![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
timer+forma
Петр © (2008-02-11 11:29:00)как сделать чтобы форма плавно выезжала, через таймер както не очень выглядит....
procedure TForm1.Timer2Timer(Sender: TObject);
begin
repeat
form1.Top := Form1.Top -1;
until (form1.Top = -form1.Height);
Timer2.Enabled := false;
end;
{RASkov} (2008-02-11 21:43:00) [1]> [12] Elec3C © (11.02.08 21:01)
> У меня прекрасно работает.
Спрашивается: Зачем цикл в обработчике таймера.... или зачем вообще таймер, если делаем циклом.....
Elec3C (2008-02-11 21:01:00) [2]
> Palladin ©
У меня прекрасно работает.
> целесообразность использования таймера
[0]
Palladin (2008-02-11 18:49:00) [3]
> [10] Elec3C © (11.02.08 18:46)
и что это за бред?
1 LockWindowUpdate заблокирует отрисовку окна вообще, независимо от изменений его размера
2 А не приходило ли твоему гениальному мозгу в голову целесообразность использования таймера, нафик он вообще?
3 так моежт будем вдумываться в код прежде чем ерундистику писать?
Elec3C (2008-02-11 18:46:00) [4]Попробуй при выезжании выключить перерисовку формы, а затем включить обратно.
procedure TForm1.Timer2Timer(Sender: TObject);
begin
LockWindowUpdate(Form1.Handle);
repeat
form1.Top := Form1.Top -1;
until (form1.Top = -form1.Height);
Timer2.Enabled := false;
LockWindowUpdate(0);
end;
P.S. Не проверял...
Петр (2008-02-11 14:57:00) [5]спасибо поразбираюсь с этим!
Dib@zol (2008-02-11 14:00:00) [6]тэкс, вот пример "собирания из кусочков".
http://webfile.ru/1736947
Все вопросы - сюда.
Только, боюсь, на VCL это не прокатит...
Anatoly Podgoretsky (2008-02-11 12:33:00) [7]> Петр (11.02.2008 12:01:02) [2]
Не через таймер делай, а через sleep
АИК (2008-02-11 12:21:00) [8]Кстати для хорошего эфекта интервал у таймере сделай наприер 10 и
form1.Top := Form1.Top - 5;
if form1.Top = -form1.Height then
Timer2.Enabled := false;
АИК (2008-02-11 12:12:00) [9]А зачам repeat until в таймере непойму
form1.Top := Form1.Top -1;
if form1.Top = -form1.Height then
Timer2.Enabled := false;
Dib@zol (2008-02-11 12:11:00) [10]Ну напр возникновение по частям, щас сбацаю исходник.
Петр (2008-02-11 12:04:00) [11]просто пока форма двигается то контролы немного глючат(как то мерцают),когда прячется то сама чуток дергается форма :(
мне кажется надо как то иначе делать...
Петр (2008-02-11 12:01:00) [12]спасибо за совет, а других вариантов нету,по "выползанию" формы?
Dib@zol (2008-02-11 11:34:00) [13]Поставь у таймера задержку поменьше. Хотя то, что ты хочешь сотворить, имхо, дурь :) Впрочем, сам так один раз делал :) Поэтому предупреждаю: если будешь также сворачивать, юзай ClientHeight а не просто Height. Иначе рискуешь, что на другом компе окно просто не "свернётся", а грациозно уплывёт вниз из-за того, что слишком большой заголовок окна помешает окну достичь "пороговой" для завершения проги высоты %)