VrPropEdit.pas
上传用户:hbszzs
上传日期:2008-08-20
资源大小:628k
文件大小:7k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {*****************************************************}
  2. {                                                     }
  3. {     Varian Component Workshop                       }
  4. {                                                     }
  5. {     Varian Software NL (c) 1996-2000                }
  6. {     All Rights Reserved                             }
  7. {                                                     }
  8. {*****************************************************}
  9. unit VrPropEdit;
  10. {$I VRLIB.INC}
  11. interface
  12. uses
  13.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  14.   DsgnIntf, VrClasses, VrBitmapsDlg, VrPaletteDlg, VrAudio, VrWaveDlg;
  15. type
  16.   TVrVersionProperty = class(TStringProperty)
  17.   public
  18.     function GetAttributes: TPropertyAttributes; override;
  19.   end;
  20.   TVrPaletteProperty = class(TClassProperty)
  21.   public
  22.     procedure Edit; override;
  23.     function GetAttributes: TPropertyAttributes; override;
  24.   end;
  25.   TVrBitmapsProperty = class(TClassProperty)
  26.   public
  27.     procedure Edit; override;
  28.     function GetAttributes: TPropertyAttributes; override;
  29.   end;
  30.   TVrWaveSoundProperty = class(TClassProperty)
  31.   public
  32.     procedure Edit; override;
  33.     function GetAttributes: TPropertyAttributes; override;
  34.   end;
  35.   TVrBitmapListEditor = class(TDefaultEditor)
  36.   protected
  37.     procedure EditProperty(PropertyEditor: TPropertyEditor;
  38.       var Continue, FreeEditor: Boolean); override;
  39.   public
  40.     procedure ExecuteVerb(Index: Integer); override;
  41.     function GetVerb(Index: Integer): string; override;
  42.     function GetVerbCount: Integer; override;
  43.   end;
  44.   TVrStringListEditor = class(TDefaultEditor)
  45.   protected
  46.     procedure EditProperty(PropertyEditor: TPropertyEditor;
  47.       var Continue, FreeEditor: Boolean); override;
  48.   public
  49.     procedure ExecuteVerb(Index: Integer); override;
  50.     function GetVerb(Index: Integer): string; override;
  51.     function GetVerbCount: Integer; override;
  52.   end;
  53.   TVrWaveEditor = class(TDefaultEditor)
  54.   protected
  55.     procedure EditProperty(PropertyEditor: TPropertyEditor;
  56.       var Continue, FreeEditor: Boolean); override;
  57.   public
  58.     procedure ExecuteVerb(Index: Integer); override;
  59.     function GetVerb(Index: Integer): string; override;
  60.     function GetVerbCount: Integer; override;
  61.   end;
  62.   TVrFileNameProperty = class(TStringProperty)
  63.   public
  64.     procedure Edit; override;
  65.     function GetAttributes: TPropertyAttributes; override;
  66.   end;
  67. implementation
  68. { TVrVersionProperty }
  69. function TVrVersionProperty.GetAttributes: TPropertyAttributes;
  70. begin
  71.   Result := [paReadOnly];
  72. end;
  73. { TVrBitmapsProperty }
  74. function TVrBitmapsProperty.GetAttributes: TPropertyAttributes;
  75. begin
  76.   Result := [paDialog] - [paSubProperties];
  77. end;
  78. procedure TVrBitmapsProperty.Edit;
  79. var
  80.   List: TVrBitmaps;
  81.   ListEditor: TVrBitmapListDialog;
  82.   Res: TModalResult;
  83. begin
  84.   List := TVrBitmaps(GetOrdValue);
  85.   ListEditor := TVrBitmapListDialog.Create(nil);
  86.   try
  87.     ListEditor.Bitmaps.Assign(List);
  88.     Res := ListEditor.ShowModal;
  89.     if Res = mrOk then
  90.     begin
  91.       List.Assign(ListEditor.Bitmaps);
  92.       Designer.Modified;
  93.     end;
  94.   finally
  95.     ListEditor.Free;
  96.   end;
  97. end;
  98. { TVrWaveSoundProperty }
  99. function TVrWaveSoundProperty.GetAttributes: TPropertyAttributes;
  100. begin
  101.   Result := [paDialog] - [paSubProperties];
  102. end;
  103. procedure TVrWaveSoundProperty.Edit;
  104. var
  105.   Wave: TVrAudioData;
  106.   WaveEditor: TVrWaveSoundDialog;
  107.   Res: TModalResult;
  108. begin
  109.   Wave := TVrAudioData(GetOrdValue);
  110.   WaveEditor := TVrWaveSoundDialog.Create(nil);
  111.   try
  112.     WaveEditor.VrWave.Sound.Assign(Wave);
  113.     WaveEditor.UpdateControls;
  114.     Res := WaveEditor.ShowModal;
  115.     if Res = mrOk then
  116.     begin
  117.       Wave.Assign(WaveEditor.VrWave.Sound);
  118.       Designer.Modified;
  119.     end;
  120.   finally
  121.     WaveEditor.Free;
  122.   end;
  123. end;
  124. { TVrBitmapListEditor }
  125. procedure TVrBitmapListEditor.EditProperty(PropertyEditor: TPropertyEditor;
  126.   var Continue, FreeEditor: Boolean);
  127. var
  128.   PropName: string;
  129. begin
  130.   PropName := PropertyEditor.GetName;
  131.   if (CompareText(PropName, 'Bitmaps') = 0) then
  132.   begin
  133.     PropertyEditor.Edit;
  134.     Continue := False;
  135.   end;
  136. end;
  137. function TVrBitmapListEditor.GetVerbCount: Integer;
  138. begin
  139.   Result := 1;
  140. end;
  141. function TVrBitmapListEditor.GetVerb(Index: Integer): string;
  142. begin
  143.   if Index = 0 then
  144.     Result := 'Bitmaps Editor!'
  145.   else Result := '';
  146. end;
  147. procedure TVrBitmapListEditor.ExecuteVerb(Index: Integer);
  148. begin
  149.   if Index = 0 then Edit;
  150. end;
  151. { TVrStringListEditor }
  152. procedure TVrStringListEditor.EditProperty(PropertyEditor: TPropertyEditor;
  153.   var Continue, FreeEditor: Boolean);
  154. var
  155.   PropName: string;
  156. begin
  157.   PropName := PropertyEditor.GetName;
  158.   if (CompareText(PropName, 'Strings') = 0) then
  159.   begin
  160.     PropertyEditor.Edit;
  161.     Continue := False;
  162.   end;
  163. end;
  164. function TVrStringListEditor.GetVerbCount: Integer;
  165. begin
  166.   Result := 1;
  167. end;
  168. function TVrStringListEditor.GetVerb(Index: Integer): string;
  169. begin
  170.   if Index = 0 then
  171.     Result := 'StringList Editor!'
  172.   else Result := '';
  173. end;
  174. procedure TVrStringListEditor.ExecuteVerb(Index: Integer);
  175. begin
  176.   if Index = 0 then Edit;
  177. end;
  178. { TVrPaletteProperty }
  179. procedure TVrPaletteProperty.Edit;
  180. var
  181.   Palette: TVrPalette;
  182.   PaletteEditor: TVrPaletteDlg;
  183.   Res: TModalResult;
  184. begin
  185.   Palette := TVrPalette(GetOrdValue);
  186.   PaletteEditor := TVrPaletteDlg.Create(nil);
  187.   try
  188.     PaletteEditor.EditorPalette := Palette;
  189.     Res := PaletteEditor.ShowModal;
  190.     if Res = mrOk then
  191.       Designer.Modified;
  192.   finally
  193.     PaletteEditor.Free;
  194.   end;
  195. end;
  196. function TVrPaletteProperty.GetAttributes: TPropertyAttributes;
  197. begin
  198.   Result := [paDialog, paSubProperties];
  199. end;
  200. { TVrWaveEditor }
  201. procedure TVrWaveEditor.EditProperty(PropertyEditor: TPropertyEditor;
  202.   var Continue, FreeEditor: Boolean);
  203. var
  204.   PropName: string;
  205. begin
  206.   PropName := PropertyEditor.GetName;
  207.   if (CompareText(PropName, 'Sound') = 0) then
  208.   begin
  209.     PropertyEditor.Edit;
  210.     Continue := False;
  211.   end;
  212. end;
  213. function TVrWaveEditor.GetVerbCount: Integer;
  214. begin
  215.   Result := 1;
  216. end;
  217. function TVrWaveEditor.GetVerb(Index: Integer): string;
  218. begin
  219.   if Index = 0 then
  220.     Result := 'Wave Editor!'
  221.   else Result := '';
  222. end;
  223. procedure TVrWaveEditor.ExecuteVerb(Index: Integer);
  224. begin
  225.   if Index = 0 then Edit;
  226. end;
  227. { TVrFileNameProperty }
  228. function TVrFileNameProperty.GetAttributes: TPropertyAttributes;
  229. begin
  230.   Result := [paDialog] - [paSubProperties];
  231. end;
  232. procedure TVrFileNameProperty.Edit;
  233. var
  234.   FileName: string;
  235.   OpenDlg: TOpenDialog;
  236. begin
  237.   FileName := GetValue;
  238.   OpenDlg := TOpenDialog.Create(nil);
  239.   try
  240.     OpenDlg.Title := 'Select';
  241.     OpenDlg.FileName := '*.*';
  242.     OpenDlg.Filter := 'All Files (*.*)|*.*';
  243.     OpenDlg.InitialDir := ExtractFileDir(FileName);
  244.     if OpenDlg.Execute then
  245.       SetValue(OpenDlg.FileName);
  246.   finally
  247.     OpenDlg.Free;
  248.   end;
  249. end;
  250. end.