⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exe.pas

📁 《深入Delphi的多媒体编程》实例源代码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit Exe;

interface

uses
  WinProcs, WinTypes,Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls, ExtCtrls, MPlayer,DrawHot, TabNotBk, ComCtrls;

const MaxShowArrayNum=30;

type
  HotRecord=Record
   x0,y0,x1,y1:Integer;
  end;

  BmpRecord=Record
   TitleName,FileName,SmallFileName:String[40];
  end;

  AviRecord=Record
   FileName:String[30];
   Left,Top,Width,Height:Integer;
  end;

  TxtRecord=Record
   FileName:String[30];
   Left,Top,Width,Height:Integer;
  end;

  BlinkRecord=Record
   Blink:String[8];
   Left,Top,Width,Height:Integer;
  end;

  ShowDataRecord=Record
   bmp:BmpRecord;
   avi:AviRecord;
   txt:TxtRecord;
   Blink:BlinkRecord;
   WavFileName:String;
  end;

  TExeForm = class(TForm)
    LastButton: TButton;
    ExeMemo: TMemo;
    MainMenu1: TMainMenu;
    BMPMenuItem: TMenuItem;
    AviMenuItem: TMenuItem;
    TxtMenuItem: TMenuItem;
    NextButton: TButton;
    SaveButton: TButton;
    ReturnButton: TButton;
    BackPanel: TPanel;
    BackImage: TImage;
    TxtMemo: TMemo;
    AviPanel: TPanel;
    OpenDialog1: TOpenDialog;
    Timer1: TTimer;
    BmpImage: TImage;
    XLabel: TLabel;
    YLabel: TLabel;
    AviMediaPlayer: TMediaPlayer;
    WorkMemo: TMemo;
    AddButton: TButton;
    DeleteButton: TButton;
    InSertButton: TButton;
    BlinkMenuItem: TMenuItem;
    BlinkImage: TImage;
    WavMenuItem: TMenuItem;
    WavMediaPlayer: TMediaPlayer;
    TabbedNotebook1: TTabbedNotebook;
    BmpCheckBox: TCheckBox;
    BmpTitleEdit: TEdit;
    BmpFileEdit: TEdit;
    AviCheckBox: TCheckBox;
    AviFileEdit: TEdit;
    AviLeftEdit: TEdit;
    AviTopEdit: TEdit;
    AviWidthEdit: TEdit;
    AviHeightEdit: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    TxtFileEdit: TEdit;
    TxtCheckBox: TCheckBox;
    Label6: TLabel;
    TxtLeftEdit: TEdit;
    TxtTopEdit: TEdit;
    TxtWidthEdit: TEdit;
    TxtHeightEdit: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    BlinkCheckBox: TCheckBox;
    BlinkTopEdit: TEdit;
    BlinkLeftEdit: TEdit;
    BlinkWidthEdit: TEdit;
    BlinkHeightEdit: TEdit;
    Label11: TLabel;
    Label12: TLabel;
    WavEdit: TEdit;
    WavCheckBox: TCheckBox;
    Label13: TLabel;
    SmallBmpFileEdit: TEdit;
    SmallBmpImage: TImage;
    Label14: TLabel;
    StepComboBox: TComboBox;
    Label15: TLabel;
    Bevel1: TBevel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    procedure BMPMenuItemClick(Sender: TObject);
    procedure AviMenuItemClick(Sender: TObject);
    procedure TxtMenuItemClick(Sender: TObject);
    procedure BmpFileEditClick(Sender: TObject);
    procedure TxtFileEditClick(Sender: TObject);
    procedure AviFileEditClick(Sender: TObject);
    procedure ReturnButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BmpImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BmpImageMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BmpImageMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure TxtMemoClick(Sender: TObject);
    procedure AviPanelClick(Sender: TObject);
    procedure NextButtonClick(Sender: TObject);
    procedure LastButtonClick(Sender: TObject);
    procedure AddButtonClick(Sender: TObject);
    procedure DeleteButtonClick(Sender: TObject);
    procedure SaveButtonClick(Sender: TObject);
    procedure InSertButtonClick(Sender: TObject);
    procedure BlinkMenuItemClick(Sender: TObject);
    procedure BlinkImageClick(Sender: TObject);
    procedure WavEditClick(Sender: TObject);
    procedure WavMenuItemClick(Sender: TObject);
    procedure SmallBmpFileEditClick(Sender: TObject);
    procedure StepComboBoxChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    LastX,LastY,HotDragAreaNum,HotObjectNum,SaveExeInSertLineNum,ShowArrayTotalNum,
    CurrentShowArrayNum:Integer;
    AllowMoveFlag,NotMoveFlag,AddRecordFlag,InsertFlag:Boolean;
    HotArea:HotRecord;
    ShowArray:Array[0..MaxShowArrayNum] of ShowDataRecord;
    procedure copyback;
    procedure InitShowArray;
    procedure TranslateStr;
    function  WorkMemoGetDataFromExeMemo(const CompareStr:String;const DirectMemo,SourceMemo:TMemo):Integer;
    procedure ShowCurrentNowLine(const i:Integer);
    procedure ClearShowThing;
    procedure ExeMemoSaveDataFromWorkMemo(Const DirectMemo,SourceMemo:TMemo);
    Procedure InitStepComboBoxData;
    Function  MyStrToInt(const SourceStr:String):Integer;
  end;

var
  ExeForm: TExeForm;

implementation

uses main;

{$R *.DFM}
//自定义字符转换成整型数字
Function  TExeForm.MyStrToInt(const SourceStr:String):Integer;
begin
 if SourceStr<>'' then
  begin
   Result:=StrToInt(SourceStr);
  end
 else
  Result:=0;
end;
//初始化步选框
Procedure TExeForm.InitStepComboBoxData;
var
 i:Integer;
begin
 StepComBoBox.Clear;
 for i:=0 to WorkMemo.Lines.Count-1 do
  begin
   if i=0 then
    StepComBoBox.Text:=ShowArray[i].Bmp.TitleName;
   StepComBoBox.Items.Add(ShowArray[i].Bmp.TitleName);
  end;
end;

{用WorkMemo更新Exememo的内容}
procedure TExeForm.ExeMemoSaveDataFromWorkMemo(Const DirectMemo,SourceMemo:TMemo);
var i,j:Integer;
begin
 i:=SaveExeInSertLineNum;
 {更新前先删除}
 if Pos('^',DirectMemo.Lines[i+1])<>0 then
  begin
   {Empty}
   j:=0;
   while j<SourceMemo.Lines.Count do
     begin
      DirectMemo.Lines.Insert(i+1,SourceMemo.Lines[j]);
      inc(i);
      inc(j);
     end;
  end
 else
  begin
   while (Pos('^',DirectMemo.Lines[i+1])=0) do
    begin
      DirectMemo.Lines.Delete(i+1);
    end;
   j:=0;
   while j<SourceMemo.Lines.Count do
     begin
      DirectMemo.Lines.Insert(i+1,SourceMemo.Lines[j]);
      inc(i);
      inc(j);
     end;
  end;   
end;
//清显示内容
procedure TExeForm.ClearShowThing;
begin
 {Bmp}
   BmpImage.Visible:=False;
   BackImage.Visible:=False;
   BmpImage.Picture:=Nil;
   BackImage.Picture:=Nil;
   BmpCheckBox.Checked:=False;
   BmpFileEdit.Text:='';
   BmpTitleEdit.Text:='';
   SmallBmpFileEdit.Text:='';
   SmallBmpImage.Visible:=False;
 {Avi}
   AviPanel.Visible:=False;
   AviCheckBox.Checked:=False;
   AviFileEdit.Text:='';
   AviLeftEdit.Text:='';
   AviTopEdit.Text:='';
   AviWidthEdit.Text:='';
   AviHeightEdit.Text:='';
  if AviMediaPlayer.Mode=mpPlaying then
   AviMediaPlayer.Close;
 {Txt}
   TxtMemo.Clear;
   TxtCheckBox.Checked:=False;
   TxtMemo.Lines.Clear;
   TxtMemo.Visible:=False;;
   TxtFileEdit.Text:='';
   TxtLeftEdit.Text:='';
   TxtTopEdit.Text:='';
   TxtWidthEdit.Text:='';
   TxtHeightEdit.Text:='';
 {Blink}
   BlinkCheckBox.Checked:=False;
   BlinkLeftEdit.Text:='';
   BlinkTopEdit.Text:='';
   BlinkWidthEdit.Text:='';
   BlinkHeightEdit.Text:='';
 {Wav}
   WavCheckBox.Checked:=False;
   WavEdit.Text:='';
  if WavMediaPlayer.Mode=mpPlaying then
   WavMediaPlayer.Close;
end;

{显示当前行}
procedure TExeForm.ShowCurrentNowLine(const i:Integer);
begin
 {Bmp大图}
 if FileExists(MainForm.MainDir+MainForm.BmpDir+ShowArray[i].Bmp.FileName) then
  begin
   BackImage.Picture.LoadFromFile(MainForm.MainDir+MainForm.BmpDir+ShowArray[i].Bmp.FileName);
   CopyBack;
   BmpCheckBox.Checked:=True;
   BackImage.Visible:=True;
   BmpImage.Visible:=True;
   BmpFileEdit.Text:=ShowArray[i].Bmp.FileName;
   BmpTitleEdit.Text:=ShowArray[i].Bmp.TitleName;
  end;

 {Bmp小图}
 if FileExists(MainForm.MainDir+MainForm.BmpDir+ShowArray[i].Bmp.SmallFileName) then
  begin
   SmallBmpImage.Picture.LoadFromFile(MainForm.MainDir+MainForm.BmpDir+ShowArray[i].Bmp.SmallFileName);
   SmallBmpImage.Visible:=True;
   BmpCheckBox.Checked:=True;
   BmpFileEdit.Text:=ShowArray[i].Bmp.FileName;
   BmpTitleEdit.Text:=ShowArray[i].Bmp.TitleName;
   SmallBmpFileEdit.Text:=ShowArray[i].Bmp.SmallFileName;
  end;

 {Avi}
 if FileExists(MainForm.MainDir+MainForm.AviDir+ShowArray[i].Avi.FileName) then
  begin
   AviMediaPlayer.FileName:=(MainForm.MainDir+MainForm.avidir+ShowArray[i].Avi.FileName);
   AviCheckBox.Checked:=True;
   AviMediaPlayer.Display:=AviPanel;
   AviMediaPlayer.Open;
   AviMediaPlayer.Play;
   AviPanel.Visible:=True;
   AviFileEdit.Text:=ShowArray[i].Avi.FileName;
  {----------------------------------------------------}
   AviPanel.Left:=ShowArray[i].Avi.Left;
   AviPanel.Top:=ShowArray[i].Avi.Top;
   AviPanel.Width:=ShowArray[i].Avi.Width;
   AviPanel.Height:=ShowArray[i].Avi.Height;
  {----------------------------------------------------}
   AviLeftEdit.Text:=IntToStr(ShowArray[i].Avi.Left);
   AviTopEdit.Text:=IntToStr(ShowArray[i].Avi.Top);
   AviWidthEdit.Text:=IntToStr(ShowArray[i].Avi.Width);
   AviHeightEdit.Text:=IntToStr(ShowArray[i].Avi.Height);
  end;

 {Txt}
 if FileExists(MainForm.MainDir+MainForm.TxtDir+ShowArray[i].Txt.FileName) then
  begin
   TxtMemo.Lines.LoadFromFile(MainForm.MainDir+MainForm.TxtDir+ShowArray[i].Txt.FileName);
   TxtCheckBox.Checked:=True;
   TxtMemo.Visible:=True;
   TxtFileEdit.Text:=ShowArray[i].Txt.FileName;
  {--------------------------------------------------}
   TxtMemo.Left:=ShowArray[i].Txt.Left;
   TxtMemo.Top:=ShowArray[i].Txt.Top;
   TxtMemo.Width:=ShowArray[i].Txt.Width;
   TxtMemo.Height:=ShowArray[i].Txt.Height;
  {--------------------------------------------------}
   TxtLeftEdit.Text:=IntToStr(ShowArray[i].Txt.Left);
   TxtTopEdit.Text:=IntToStr(ShowArray[i].Txt.Top);
   TxtWidthEdit.Text:=IntToStr(ShowArray[i].Txt.Width);
   TxtHeightEdit.Text:=IntToStr(ShowArray[i].Txt.Height);
  end;

 {Blink}
 if ShowArray[i].Blink.BLink='Blink' then
  begin
   BlinkCheckBox.Checked:=True;
  {------------------------------------------------------}
   BlinkImage.Left:=ShowArray[i].Blink.Left;
   BlinkImage.Top:=ShowArray[i].Blink.Top;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -