Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 2 / 1
Регистрация: 08.01.2013
Сообщений: 88

Движение button при старте программы

27.01.2013, 13:14. Показов 876. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сообразил себе калькулятор кое-как.
Теперь хотелось бы анимировать какую-нибудь button. Говорили, что надо с TForm1.Create химичить. Написал код:
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.FormCreate(Sender: TObject);
begin
for i := 1 to 141 do
  begin
    g10:=i+1;
    Button11.Top:=g10;
    sleep(10);
  end;
end;
Но чем больше значение "Sleep", тем с большей задержкой запускается программа, а после запуска никакой анимации не происходит. Что же мне сделать? Я теперь понимаю, что sleep 141 раз подряд по 0.01 сек. задерживает программу, тогда я не понимаю... Delay вроде можно, но самому его писать я не умею.

Гугление мне не помогло: везде только покадровые анимации, а мне хотя бы анимацию примитивного движения сделать...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.01.2013, 13:14
Ответы с готовыми решениями:

Автозапуск программы при старте Windows
Помогите сделать автозагрузку программы при включении копмьютера пожалуйста я в uses добавил RegisTry И написал этот код var ...

Считывание пароля для .mdb из файла при старте программы
Всем доброго времени суток. Помогите решить проблему со считыванием пароля из файла для базы Access. Есть ADOConnection, ADOQuery на 1ой...

Событие при старте программы
Запуск кода при запуске пограммы ? Как называется продцедура ссылающаяся на событие при загрузке программы. В основном коде Delphi...

7
1 / 1 / 0
Регистрация: 23.01.2013
Сообщений: 29
27.01.2013, 13:46
ну если примитивное, попробуйте так:
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.FormCreate(Sender: TObject);
begin
for i := 1 to 141 do
  begin
    g10:=i+1;
    Button11.Top:=g10;
    application.ProcessMessages;
    sleep(10);
  end;
end;
0
3 / 2 / 1
Регистрация: 08.01.2013
Сообщений: 88
27.01.2013, 14:56  [ТС]
Не получилось, проблема осталась... Может, я не ту процедуру взял (event=Form1.Create)?
0
1 / 1 / 0
Регистрация: 23.01.2013
Сообщений: 29
27.01.2013, 14:58
ну попробуйте OnShow

Не по теме:

Кстати да, лучше в OnCreate такое не пихать... сразу об этом не подумал

0
3 / 2 / 1
Регистрация: 08.01.2013
Сообщений: 88
27.01.2013, 15:02  [ТС]
Не, не пашет анимка ни при activated, ни при show... Что, каждую кнопку через Timer писать? Ай, да ну...
0
1 / 1 / 0
Регистрация: 23.01.2013
Сообщений: 29
27.01.2013, 15:23
Ладно, сейчас придумаем что-нить

Добавлено через 18 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
    procedure FormDeactivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
 
  public
    procedure down_button();
    procedure up_button();
 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.down_button();
var
  i, i1, i2: integer;
begin
  i1 := Button1.Top;
  i2 := 100;
  for i := i1 to i2 do
    begin
      Button1.Top := i;
      application.ProcessMessages;
      sleep(2);
    end;
end;
 
procedure TForm1.up_button;
var
  i, i1, i2: integer;
begin
  i2 := Button1.Top;
  i1 := -Button1.Height - 1;
  for i := i2 downto i1 do
    begin
      Button1.Top := i;
      application.ProcessMessages;
      sleep(2);
    end;
end;
 
procedure TForm1.FormActivate(Sender: TObject);
var
  i: integer;
begin
  Button1.Top := -Button1.Height - 1;
  down_button();
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  application.OnDeactivate := FormDeactivate;
  application.OnActivate := FormActivate;
end;
 
procedure TForm1.FormDeactivate(Sender: TObject);
begin
  up_button;
end;
 
end.
вроде работает

Добавлено через 1 минуту
попробуй ещё покликать на форму другой программы (или на область панели задач), чтобы окно стало неактивным. Тогда кнопка уедет обратно - вроде всё срабатывает
0
3 / 2 / 1
Регистрация: 08.01.2013
Сообщений: 88
27.01.2013, 15:50  [ТС]
Короче, кое-как встроил в свой код - не пашет. Button1 заменил на Button11, а куда писать процедуры "up_button", "FormDeactivate" и прочие?
Извиняюсь, я пока нуб.
Попробую код по-чистому забабахать.

Добавлено через 12 минут
No, не получилось. Мои кривые руки! Ничего, буду стараться, попробую завтра сделать (сейчас уже десятый час вечера).
0
1 / 1 / 0
Регистрация: 23.01.2013
Сообщений: 29
27.01.2013, 15:56
пока не надо было ничего интергрировать в свой код - достаточно было скопипастить мой модуль
и процедуру FormCreate назначить на OnCreate формы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2013, 15:56
Помогаю со студенческими работами здесь

Выполнение алгоритма при старте программы
Имеется программа Форма, на ней ЛистБокс, статусбар, пару прогрессбаров. Хочется чтоб при загрузке программы сразу выполнялся...

Краш программы при старте потока
Здравствуйте! Возник такой вопрос! В общем, при старте потока в моей программе происходит краш программы! Скриншот : ...

Открытие сайта при старте программы
Здравствуйте, как сделать , что бы нажимаю .exe стартовала программа + открывался сайт в браузере(ну естественно черезе браузер который по...

Автозапуск программы при старте Windows
Помогите сделать автозагрузку программы при включении копмьютера пожалуйста я в uses добавил RegisTry И написал этот код var...

Полоска загрузки при старте программы
Подскажите пожалуйста как сделать загрузочное окошко при запуске программы , с каким нибудь прогресс баром секунд на 5. Кто непонял я имею...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru