Суббота, 27 Апр 2024, 02:49
Uchi.ucoz.ru
Меню сайта
Форма входа

Категории раздела
Высшая математика [11]
Экономическая социология [95]
Основы Менеджмента [64]
Бухгалтерский учёт [157]
Философия [163]
Мировая Экономика [603]
Бизнес планирование [29]
Финансирование и кредитование инвест [105]
Ценообразование [46]
Гражданское право [196]
Права Человека [173]
Основы Маркетинга [207]
Основы энергосбережения [55]
Информатика [0]
Экология и устойчивое развитие [0]
Физика для студентов [0]
Основы права [0]
Политология [0]
Не стандартные примеры на Delphi [169]
Примеры на Delphi7 [108]
Алгоритмы [94]
API [110]
Pascal [152]
Базы Данных [6]
Новости
Чего не хватает сайту?
500
Статистика
Зарегистрировано на сайте:
Всего: 51635


Онлайн всего: 7
Гостей: 7
Пользователей: 0
Яндекс.Метрика
Рейтинг@Mail.ru

Каталог статей


Главная » Статьи » Студентам » Примеры на Delphi7

Анимируйте Ваше приложение с помощью Delphi
Когда неделю назад я подумал сделать свое приложение более "живым", то решил создать процедуру , которая бы анимировала средства управления. Это оказалось более трудным делом, чем я предполагал.

Итак, нижеприведенный код - это результат почти недели "тяжелой" работы. Вероятно много можно сделать для увеличения функциональности и повышения скорости данной программы. Часть кода для данной процедуры я подчерпнул в статье на сайте Delphi3000.com.

Небольшое описание используемых параметров:

Control: В качестве этой переменной используется любой компонент - наследник класса TControl . Если компонент не является наследником TControl, но имеет свойства Left и Top , все равно поместите его на месте TControl. Поскольку процедура обращается только к Свойствам Top и Left , то это сработает OK.
Dest: Величина типа TPoint , которая показывает , где остановится Control (на текущей форме) после анимации.
PixPTick: Pixels Per Tick. Любая величина (рекомендуется 2-4) от 0 и выше. Она не изменяет положение Control точно на каждый шаг (tick). Чем выше эта величина , тем быстрее движение.

procedure MoveControl(var Control: TControl; Dest: TPoint; PixPTick: Integer);
var
StartTick, OldTick, CurTick, TickDif: Cardinal;
Steps: Integer;
begin
StartTick :=3D GetTickCount;
CurTick :=3D StartTick;
Steps :=3D 0;
// Переводит Control в соответствии с Dest.y и PixPTick
if Control.Top Dest.y then // Проводит необходимые вычисления
if Control.Top 0) and (Dest.y 0) and // Устраняет деление на 0
// Проверка на необходимость дальнейшей регулировки
((Dest.y - Control.Top) mod PixPTick 0) do
Control.Top :=3D Control.Top - 1
else
while (Control.Top 0) and (Dest.y 0) and // Устраняет деление на 0
// Проверка на необходимость дальнейшей регулировки
((Control.Top - Dest.y) mod PixPTick 0) do
Control.Top :=3D Control.Top + 1;
// Переводит Control в соответствии с Dest.x и PixPTick
if Control.Left Dest.x then // Проводит необходимые вычисления
if Control.Left 0) and (Dest.x 0) and // Устраняет деление на 0
// Проверка на необходимость дальнейшей регулировки
((Dest.x - Control.Left) mod PixPTick 0) do
Control.Left :=3D Control.Left - 1
else
while (Control.Left 0) and (Dest.x 0) and // Устраняет деление на 0
// Проверка на необходимость дальнейшей регулировки
((Control.Left - Dest.x) mod PixPTick 0) do
Control.Left :=3D Control.Left + 1;
repeat
Application.ProcessMessages; // Реакция приложения на ввод пользователя
OldTick :=3D CurTick; // Время последнего фрейма
CurTick :=3D GetTickCount; // Текущее время
TickDif :=3D CurTick - OldTick; // Разница во времени
// По крайней мере 1 миллисекунда прошла с момента показа последнего фрейма
if TickDif > 0 then
begin
Inc(Steps);
if Control.Left > Dest.x then
Control.Left :=3D Control.Left - PixPTick
else if Control.Left Dest.y) then
Control.Top :=3D Control.Top - PixPTick
else if (Control.Top // Если прошло больше 150 шагов (что маловероятно), движение
// остановится, чтобы не войти в бесконечный цикл. Измените данную величину
// в соответствии с вашими требованиями, или удалите ее.
until ((Control.Left =3D Dest.x) and (Control.Top =3D Dest.y)) or (Steps > 150);
end;
Категория: Примеры на Delphi7 | Добавил: Lerka (21 Ноя 2012)
Просмотров: 623 | Рейтинг: 1.0/ 5 Оштрафовать | Жаловаться на материал
Похожие материалы
Всего комментариев: 0

Для блога (HTML)


Для форума (BB-Code)


Прямая ссылка

Профиль
Суббота
27 Апр 2024
02:49


Вы из группы: Гости
Вы уже дней на сайте
У вас: непрочитанных сообщений
Добавить статью
Прочитать сообщения
Регистрация
Вход
Улучшенный поиск
Поиск по сайту Поиск по всему интернету
Наши партнеры
Интересное
Популярное статьи
Портфолио ученика начальной школы
УХОД ЗА ВОЛОСАМИ ОЧЕНЬ ПРОСТ — ХОЧУ Я ЭТИМ ПОДЕЛИТ...
Диктанты 2 класс
Детство Л.Н. Толстого
Библиографический обзор литературы о музыке
Авторская программа элективного курса "Практи...
Контрольная работа по теме «Углеводороды»
Поиск
Главная страница
Используются технологии uCoz