Unit1.pas
上传用户:raido2005
上传日期:2022-06-22
资源大小:5044k
文件大小:4k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, ExtCtrls, StdCtrls, SWFStreams;
  6. type
  7.   TForm1 = class(TForm)
  8.     L1: TLabel;
  9.     EXMin: TEdit;
  10.     LXMin: TLabel;
  11.     Label1: TLabel;
  12.     EXMax: TEdit;
  13.     LXMax: TLabel;
  14.     Label3: TLabel;
  15.     EYMin: TEdit;
  16.     LYMin: TLabel;
  17.     Label5: TLabel;
  18.     EYMax: TEdit;
  19.     LYMax: TLabel;
  20.     LFile: TLabel;
  21.     Bevel1: TBevel;
  22.     Button1: TButton;
  23.     BModif: TButton;
  24.     CBBackup: TCheckBox;
  25.     Label2: TLabel;
  26.     EFPS: TEdit;
  27.     LInfo: TLabel;
  28.     CBCompress: TCheckBox;
  29.     Bevel2: TBevel;
  30.     procedure Button1Click(Sender: TObject);
  31.     procedure EXMinChange(Sender: TObject);
  32.     procedure EXMaxChange(Sender: TObject);
  33.     procedure EYMinChange(Sender: TObject);
  34.     procedure EYMaxChange(Sender: TObject);
  35.     procedure BModifClick(Sender: TObject);
  36.     procedure FormDestroy(Sender: TObject);
  37.   private
  38.     { Private declarations }
  39.   public
  40.      SWF: TSWFStreamReader;
  41.   end;
  42. var
  43.   Form1: TForm1;
  44. implementation
  45. {$R *.dfm}
  46. procedure TForm1.Button1Click(Sender: TObject);
  47.  var OD:tOpenDialog;
  48.      S:single;
  49.      BS:byte;
  50.      R:tRect;
  51.      WAddr:LongWord;
  52.      il,ip:byte;
  53.      stt: string;
  54.      sr: TSearchRec;
  55. begin
  56.  OD:=tOpenDialog.Create(self);
  57.  OD.Filter:='SWF|*.swf';
  58.  if OD.Execute then
  59.   begin
  60.    LFile.Caption:= OD.FileName;
  61.    Try
  62.        if SWF<>nil then SWF.Free;
  63.        SWF:= TSWFStreamReader.Create(OD.FileName);
  64.        if SWF.Compressed then
  65.          begin
  66.           FindFirst(OD.FileName, faAnyFile, sr);
  67.           stt := ' ('+ IntToStr(sr.Size)+')';
  68.           FindClose(SR);
  69.          end else stt := '';
  70.        LInfo.Caption:=Format('Ver: %d   Size: %d%s bytes   Frames count: %d',[SWF.Version, SWF.SWFHeader.FileSize, stt, SWF.FramesCount]);
  71.        With SWF.MovieRect do
  72.         begin
  73.          EXMin.Text:= IntToStr(Left);
  74.          EXMax.Text:= IntToStr(Right);
  75.          EYMin.Text:= IntToStr(Top);
  76.          EYMax.Text:= IntToStr(Bottom);
  77.         end;
  78.        EFPS.Text:=FloatToStr(SWF.FPS);
  79.        CBCompress.Checked := SWF.Compressed;
  80.        BModif.Enabled:=true;
  81.    except
  82.     ShowMessage('Error opening!');
  83.    end;
  84.   end;
  85.  OD.Free;
  86. end;
  87. procedure TForm1.EXMinChange(Sender: TObject);
  88.  var V:integer;
  89. begin
  90.  Try
  91.    V:=StrToInt(EXMin.Text);
  92.  finally
  93.    LXMin.Caption:= Format('(%d px)',[V div 20]);
  94.  end;
  95. end;
  96. procedure TForm1.EXMaxChange(Sender: TObject);
  97.  var V:integer;
  98. begin
  99.  Try
  100.    V:=StrToInt(EXMax.Text);
  101.  finally
  102.    LXMax.Caption:= Format('(%d px)',[V div 20]);
  103.  end;
  104. end;
  105. procedure TForm1.EYMinChange(Sender: TObject);
  106.  var V:integer;
  107. begin
  108.  Try
  109.    V:=StrToInt(EYMin.Text);
  110.  finally
  111.    LYMin.Caption:= Format('(%d px)',[V div 20]);
  112.  end;
  113. end;
  114. procedure TForm1.EYMaxChange(Sender: TObject);
  115.  var V:integer;
  116. begin
  117.  Try
  118.    V:=StrToInt(EYMax.Text);
  119.  finally
  120.    LYMax.Caption:= Format('(%d px)',[V div 20]);
  121.  end;
  122. end;
  123. procedure TForm1.BModifClick(Sender: TObject);
  124.  var
  125.     W:Word;
  126.     S:single;
  127.     R: TRect;
  128.     ch:char;
  129.     stt: string;
  130. begin
  131.  try
  132.    W:= StrToInt(EFPS.Text);
  133.    S:=W;
  134.  except
  135.    try
  136.     S:= StrToFloat(EFPS.Text);
  137.    except
  138.     S:=0;
  139.    end;
  140.  end;
  141.  if S=0 then
  142.   begin
  143.    ShowMessage('FPS is not valid!');
  144.    exit;
  145.   end;
  146.  try
  147.   R:=Rect(StrToInt(EXMin.Text),
  148.           StrToInt(EYMin.Text),
  149.           StrToInt(EXMax.Text),
  150.           StrToInt(EYMax.Text));
  151.  except
  152.   ShowMessage('Movie rect is not valid!');
  153.   exit;
  154.  end;
  155.  SWF.MovieRect := R;
  156.  SWF.FPS := S;
  157.  SWF.Compressed := CBCompress.Checked;
  158.   if CBBackup.Checked then
  159.     begin
  160.       stt := ChangeFileExt(lFile.Caption, '.bak');
  161.       if FileExists(stt) then DeleteFile(stt);
  162.       Copyfile(PChar(lFile.Caption), PChar(stt), true);
  163.     end;
  164.  SWF.SaveToFile(lFile.Caption);
  165. end;
  166. procedure TForm1.FormDestroy(Sender: TObject);
  167. begin
  168.   if SWF<>nil then SWF.Free;
  169. end;
  170. end.