MMWavPrp.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:9k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {========================================================================}
  2. {=                (c) 1995-98 SwiftSoft Ronald Dittrich                 =}
  3. {========================================================================}
  4. {=                          All Rights Reserved                         =}
  5. {========================================================================}
  6. {=  D 01099 Dresden             = Fax.: +49 (0)351-8037944              =}
  7. {=  Loewenstr.7a                = info@swiftsoft.de                     =}
  8. {========================================================================}
  9. {=  Actual versions on http://www.swiftsoft.de/mmtools.html             =}
  10. {========================================================================}
  11. {=  This code is for reference purposes only and may not be copied or   =}
  12. {=  distributed in any format electronic or otherwise except one copy   =}
  13. {=  for backup purposes.                                                =}
  14. {=                                                                      =}
  15. {=  No Delphi Component Kit or Component individually or in a collection=}
  16. {=  subclassed or otherwise from the code in this unit, or associated   =}
  17. {=  .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed     =}
  18. {=  without express permission from SwiftSoft.                          =}
  19. {=                                                                      =}
  20. {=  For more licence informations please refer to the associated        =}
  21. {=  HelpFile.                                                           =}
  22. {========================================================================}
  23. {=  $Date: 04.08.98 - 01:07:24 $                                        =}
  24. {========================================================================}
  25. unit MMWavPrp;
  26. {$I COMPILER.INC}
  27. interface
  28. uses
  29. {$IFDEF WIN32}
  30.     Windows,
  31. {$ELSE}
  32.     WinTypes,
  33.     WinProcs,
  34. {$ENDIF}
  35.     SysUtils,
  36.     Consts,
  37.     Classes,
  38. {$IFDEF DELPHI6}
  39.     DesignIntf,
  40.     DesignEditors,
  41. {$ELSE}
  42.     DsgnIntf,
  43. {$ENDIF}
  44.     MMObj,
  45.     MMDSPObj,
  46.     MMWave,
  47.     MMCstDlg,
  48.     MMWPlay,
  49.     MMWRec,
  50.     MMACMDlg;
  51. type
  52.   {-- TMMWaveFileProperty ------------------------------------------------}
  53.   TMMWaveFileProperty = class(TStringProperty)
  54.   public
  55.     procedure Edit; override;
  56.     function  GetAttributes: TPropertyAttributes; override;
  57.     procedure SetValue(const aValue: string); override;
  58.   end;
  59.   {-- TMMWaveProperty ----------------------------------------------------}
  60.   TMMWaveProperty = class(TClassProperty)
  61.   public
  62.     function  GetAttributes: TPropertyAttributes; override;
  63.     function  GetValue: string; override;
  64.     procedure SetValue(const aValue: string); override;
  65.   end;
  66.   {-- TMMWaveComponentEditor ---------------------------------------------}
  67.   TMMWaveComponentEditor = class(TComponentEditor)
  68.   public
  69.     procedure ExecuteVerb(Index: Integer); override;
  70.     function  GetVerb(Index: Integer): string; override;
  71.     function  GetVerbCount: Integer; override;
  72.   end;
  73.   {-- TMMWaveFormatProperty ----------------------------------------------}
  74.   TMMWaveFormatProperty = class(TStringProperty)
  75.   public
  76.     procedure Edit; override;
  77.     function  GetAttributes: TPropertyAttributes; override;
  78.   end;
  79.   {-- TMMWaveFormatComponentEditor --------------------------------------}
  80.   TMMWaveFormatComponentEditor = class(TComponentEditor)
  81.   public
  82.     procedure ExecuteVerb(Index: Integer); override;
  83.     function  GetVerb(Index: Integer): string; override;
  84.     function  GetVerbCount: Integer; override;
  85.   end;
  86. implementation
  87. {== TMMWaveFileProperty ==================================================}
  88. function TMMWaveFileProperty.GetAttributes: TPropertyAttributes;
  89. begin
  90.    Result := [paDialog];
  91. end;
  92. {-- TMMWaveFileProperty --------------------------------------------------}
  93. procedure TMMWaveFileProperty.Edit;
  94. var
  95.    aFileName: TFileName;
  96. begin
  97.    with TMMWaveOpenDialog.Create(nil) do
  98.    try
  99.       aFileName := GetValue;
  100.       if FileExists(aFileName) then
  101.       begin
  102.          InitialDir := ExtractFilePath(aFileName);
  103.          FileName := ExtractFileName(aFileName);
  104.       end;
  105.       if Execute then SetValue(FileName);
  106.    finally
  107.       Free;
  108.    end;
  109. end;
  110. {-- TMMWaveFileProperty --------------------------------------------------}
  111. procedure TMMWaveFileProperty.SetValue(const aValue: string);
  112. begin
  113.    inherited SetValue(UpperCase(aValue));
  114. end;
  115. {== TMMWaveProperty ======================================================}
  116. function TMMWaveProperty.GetAttributes: TPropertyAttributes;
  117. begin
  118.    Result := [paSubProperties];
  119. end;
  120. {-- TMMWaveProperty ------------------------------------------------------}
  121. function TMMWaveProperty.GetValue: string;
  122. Var
  123.    aWave: TMMWave;
  124. begin
  125.    aWave := TMMWave(GetOrdValue);
  126.    if aWave.Empty and ((aWave.FileName = '')or(not aWave.FileMustExist)) then
  127.       Result := {$IFDEF DELPHI3}srNone{$ELSE}LoadStr(srNone){$ENDIF}
  128.    else
  129.       Result := '(TMMWave)';
  130. end;
  131. {-- TMMWaveProperty ------------------------------------------------------}
  132. procedure TMMWaveProperty.SetValue(const aValue: string);
  133. begin
  134.    if aValue = '' then SetOrdValue(0);
  135. end;
  136. {== TMMWaveComponentEditor ===============================================}
  137. procedure TMMWaveComponentEditor.ExecuteVerb(Index: Integer);
  138. Var
  139.    aFileName: TFileName;
  140. begin
  141.    aFileName := '';
  142.    with TMMWaveOpenDialog.Create(nil) do
  143.    try
  144.       if (Component is TMMCustomWaveFile) then
  145.          aFileName := (Component as TMMCustomWaveFile).Wave.FileName
  146.       else if (Component is TMMCustomWaveEditor) then
  147.          aFileName := (Component as TMMCustomWaveEditor).Wave.FileName
  148.       else if (Component is TMMWavePlayer) then
  149.          aFileName := (Component as TMMWavePlayer).Wave.FileName
  150.       else if (Component is TMMWaveRecorder) then
  151.          aFileName := (Component as TMMWaveRecorder).Wave.FileName;
  152.       if (aFileName <> '') and FileExists(aFileName) then
  153.       begin
  154.          FileName := ExtractFileName(aFileName);
  155.          InitialDir := ExtractFilePath(aFileName);
  156.       end;
  157.       if Execute then
  158.       begin
  159.          if (Component is TMMCustomWaveFile) then
  160.             (Component as TMMCustomWaveFile).Wave.FileName := FileName
  161.          else if (Component is TMMCustomWaveEditor) then
  162.             (Component as TMMCustomWaveEditor).Wave.FileName := FileName
  163.          else if (Component is TMMWavePlayer) then
  164.             (Component as TMMWavePlayer).Wave.FileName := FileName
  165.          else if (Component is TMMWaveRecorder) then
  166.             (Component as TMMWaveRecorder).Wave.FileName := FileName;
  167.          if (Designer <> nil) then Designer.Modified;
  168.       end;
  169.    finally
  170.       Free;
  171.    end;
  172. end;
  173. {-- TMMWaveComponentEditor -----------------------------------------------}
  174. function TMMWaveComponentEditor.GetVerb(Index: Integer): string;
  175. begin
  176.    Result := LoadResStr(IDS_WAVESELECTFILE);
  177. end;
  178. {-- TMMWaveComponentEditor -----------------------------------------------}
  179. function TMMWaveComponentEditor.GetVerbCount: Integer;
  180. begin
  181.    Result := 1;
  182. end;
  183. {== TMMWaveFormatProperty ================================================}
  184. function TMMWaveFormatProperty.GetAttributes: TPropertyAttributes;
  185. begin
  186.    Result := [paDialog];
  187. end;
  188. {-- TMMWaveFormatProperty ------------------------------------------------}
  189. procedure TMMWaveFormatProperty.Edit;
  190. var
  191.    ACM: TMMACM;
  192.    Component: TComponent;
  193. begin
  194.    Component := TComponent(GetComponent(0));
  195.    if (Component <> nil) and (Component is TMMDSPComponent) then
  196.    with (Component as TMMDSPComponent) do
  197.    begin
  198.       ACM := TMMACM.Create(nil);
  199.       try
  200.          if (Component is TMMWaveRecorder) then
  201.             ACM.EnumFormats := efInput
  202.          else
  203.             ACM.EnumFormats := efAll;
  204.          if ACM.ChooseFormat(PWaveFormat,'Select Format') then
  205.          begin
  206.             PWaveFormat := ACM.PWaveFormat;
  207.             if (Designer <> nil) then Designer.Modified;
  208.          end;
  209.       finally
  210.          ACM.Free;
  211.       end;
  212.    end;
  213. end;
  214. {== TMMWaveFormatComponentEditor ==============================================}
  215. procedure TMMWaveFormatComponentEditor.ExecuteVerb(Index: Integer);
  216. var
  217.    ACM: TMMACM;
  218. begin
  219.    if (Component <> nil) and (Component is TMMDSPComponent) then
  220.    with (Component as TMMDSPComponent) do
  221.    begin
  222.       ACM := TMMACM.Create(nil);
  223.       try
  224.          if (Component is TMMWaveRecorder) then
  225.             ACM.EnumFormats := efInput
  226.          else
  227.             ACM.EnumFormats := efAll;
  228.          if ACM.ChooseFormat(PWaveFormat,'Select Format') then
  229.          begin
  230.             PWaveFormat := ACM.PWaveFormat;
  231.             if (Designer <> nil) then Designer.Modified;
  232.          end;
  233.       finally
  234.          ACM.Free;
  235.       end;
  236.    end;
  237. end;
  238. {-- TMMWaveFormatComponentEditor ----------------------------------------------}
  239. function TMMWaveFormatComponentEditor.GetVerb(Index: Integer): string;
  240. begin
  241.    Result := 'Select WaveFormat...';
  242. end;
  243. {-- TMMWaveFormatComponentEditor ----------------------------------------------}
  244. function TMMWaveFormatComponentEditor.GetVerbCount: Integer;
  245. begin
  246.    Result := 1;
  247. end;
  248. end.