Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 21:42   #1
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию Delphi 7 проблема с Анимацией

Привет всем

Написал программу, которая проигрывает стандартную анимацию в Windows (ну там, копирование файла, поиск папки etc.) на форме также есть TrackBar для покадрового просмотра анимации.
Проблема в следующем, нужно, чтобы при нажатии кнопки "Старт" вместе с анимацией, как говорится, "В такт", двигался и TrackBar тоже.
И, если нужно - TrackBar1.Max:=Animate1.FrameCount
Заранее благодарю за помощь.



Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, Mask, XPMan;
type
  TForm1 = class(TForm)
    Animate1: TAnimate;
    Label1: TLabel;
    RadioGroup1: TRadioGroup;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    TrackBar1: TTrackBar;
    MaskEdit1: TMaskEdit;
    UpDown1: TUpDown;
    XPManifest1: TXPManifest;
    Label2: TLabel;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure MaskEdit1Change(Sender: TObject);
    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
const
avitype:array[0..8] of TCommonAVI = (aviNone,aviCopyFile, aviCopyFiles,
aviDeleteFile, aviEmptyRecycle, aviFindComputer, aviFindFile,
aviFindFolder, aviRecycleFile);

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

RadioGroup1.ItemIndex:=0;
RadioGroup1Click(Sender);
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
Animate1.CommonAVI:=aviType[Radiogroup1.itemindex];
Label1.Caption:=RadioGroup1.Items[Radiogroup1.itemindex];
button3.click;
If animate1.CommonAVI=aviNone then TrackBar1.Enabled:=false else TrackBar1.Enabled:=true;
if RadioGroup1.ItemIndex=0
then button2.Enabled:=false
else Button3.Enabled:=true;
TrackBar1.Max:=Animate1.FrameCount;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Animate1.Play(TrackBar1.Position,Animate1.FrameCount,UpDown1.Position);
Button2.Enabled:=false;
Button3.Enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Animate1.Stop;
Button2.Enabled:=true;
Button3.Enabled:=false;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
if (Button2.Enabled=false) and not (animate1.CommonAVI=aviNone)  then
begin
Button2.Enabled:=true;
Button3.Enabled:=false;
end;
Animate1.Seek(TrackBar1.Position);
If TrackBar1.Position=0 then animate1.stop;
end;

procedure TForm1.MaskEdit1Change(Sender: TObject);
begin
If (Button2.Enabled=false) and not (animate1.CommonAVI=aviNone) then
begin
Animate1.Stop;
button2.Enabled:=true;
Button3.Enabled:=false;
end;
end;

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
If (Button2.Enabled=false) and not (animate1.CommonAVI=aviNone) then
begin
Animate1.Stop;
button2.Enabled:=true;
Button3.Enabled:=false;
end;
end;
end.
Вложения
Тип файла: rar Animation.rar (8.8 Кб, 43 просмотров)
Rus 47 вне форума Ответить с цитированием
Старый 26.05.2009, 00:17   #2
Showy
Форумчанин Подтвердите свой е-майл
 
Аватар для Showy
 
Регистрация: 08.08.2007
Сообщений: 183
По умолчанию

Берём таймер и в нём меняем кадр TAnimate, в общем набросал небольшой примерчик
Код:
......
var
  AnimatePos: Integer;
......
procedure TForm1.FormCreate(Sender: TObject);
begin
  AnimatePos := 1;
  Animate1.Open := True;
  TrackBar1.Max := Animate1.FrameCount;
  Timer1.Interval := 100;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Animate1.Seek(AnimatePos);
  TrackBar1.Position := AnimatePos;
  if AnimatePos > Animate1.FrameCount then
    Timer1.Enabled := False;
  Inc(AnimatePos);
end;
Until The End Of Time
Showy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с анимацией проги! Aboltus Общие вопросы Delphi 3 29.07.2008 23:21
Работа с анимацией в ACCESS kuk132 Microsoft Office Access 1 17.07.2008 14:07
Задача с анимацией KpeHDeJIb Помощь студентам 1 04.07.2008 20:23
Помогите с анимацией в Паскале ЕвгениуS Помощь студентам 6 06.06.2008 15:10
Как отображать в своей программе файлы *.gif с анимацией? SalasAndriy Общие вопросы C/C++ 1 02.11.2007 12:17