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

Delphi控件源码

开发平台:

Delphi

  1. {*******************************************************}
  2. {                                                       }
  3. {         Delphi VCL Extensions (RX)                    }
  4. {                                                       }
  5. {         Copyright (c) 1998 Master-Bank                }
  6. {                                                       }
  7. {*******************************************************}
  8. unit RxDsgn;
  9. {$I RX.INC}
  10. interface
  11. uses {$IFDEF WIN32} Windows, {$ELSE} WinTypes, {$ENDIF} Classes, SysUtils,
  12.   RTLConsts, DesignIntf, DesignEditors, VCLEditors, Controls, Graphics, ExtCtrls, Menus, Forms;
  13. type
  14. {$IFNDEF RX_D4}
  15.   IDesigner = TDesigner;
  16.   IFormDesigner = TFormDesigner;
  17. {$ENDIF}
  18. { TFilenameProperty }
  19.   TFilenameProperty = class(TStringProperty)
  20.   protected
  21.     function GetFilter: string; virtual;
  22.   public
  23.     procedure Edit; override;
  24.     function GetAttributes: TPropertyAttributes; override;
  25.   end;
  26. { TDirnameProperty }
  27.   TDirnameProperty = class(TStringProperty)
  28.   public
  29.     procedure Edit; override;
  30.     function GetAttributes: TPropertyAttributes; override;
  31.   end;
  32. { TProgressControlProperty }
  33.   TProgressControlProperty = class(TComponentProperty)
  34.   private
  35.     FProc: TGetStrProc;
  36.     procedure CheckComponent(const AName: string);
  37.   public
  38.     procedure GetValues(Proc: TGetStrProc); override;
  39.   end;
  40. { TRxDBStringProperty }
  41.   TRxDBStringProperty = class(TStringProperty)
  42.   public
  43.     function GetAttributes: TPropertyAttributes; override;
  44.     procedure GetValueList(List: TStrings); virtual;
  45.     procedure GetValues(Proc: TGetStrProc); override;
  46.   end;
  47. implementation
  48. uses Consts, Dialogs, RxCConst, FileUtil, VclUtils, RxPrgrss;
  49. { TFilenameProperty }
  50. function TFilenameProperty.GetFilter: string;
  51. begin
  52.   Result := LoadStr(SDefaultFilter);
  53. end;
  54. procedure TFilenameProperty.Edit;
  55. var
  56.   FileOpen: TOpenDialog;
  57. begin
  58.   FileOpen := TOpenDialog.Create(Application);
  59.   try
  60.     FileOpen.Filename := GetValue;
  61.     FileOpen.InitialDir := ExtractFilePath(FileOpen.Filename);
  62.     if (ExtractFileName(FileOpen.Filename) = '') or not
  63.       ValidFileName(ExtractFileName(FileOpen.Filename)) then
  64.       FileOpen.Filename := '';
  65.     FileOpen.Filter := GetFilter;
  66.     FileOpen.Options := FileOpen.Options + [ofHideReadOnly];
  67.     if FileOpen.Execute then SetValue(FileOpen.Filename);
  68.   finally
  69.     FileOpen.Free;
  70.   end;
  71. end;
  72. function TFilenameProperty.GetAttributes: TPropertyAttributes;
  73. begin
  74.   Result := [paDialog {$IFDEF WIN32}, paRevertable {$ENDIF}];
  75. end;
  76. { TDirnameProperty }
  77. procedure TDirnameProperty.Edit;
  78. var
  79.   FolderName: string;
  80. begin
  81.   FolderName := GetValue;
  82.   if BrowseDirectory(FolderName, ResStr(SSelectDirCap), 0) then
  83.     SetValue(FolderName);
  84. end;
  85. function TDirnameProperty.GetAttributes: TPropertyAttributes;
  86. begin
  87.   Result := [paDialog {$IFDEF WIN32}, paRevertable {$ENDIF}];
  88. end;
  89. { TProgressControlProperty }
  90. procedure TProgressControlProperty.CheckComponent(const AName: string);
  91. var
  92.   Component: TComponent;
  93. begin
  94. {$IFDEF WIN32}
  95.   Component := Designer.GetComponent(AName);
  96. {$ELSE}
  97.   Component := Designer.Form.FindComponent(AName);
  98. {$ENDIF}
  99.   if (Component <> nil) and (Component is TControl) and
  100.     SupportsProgressControl(TControl(Component)) and Assigned(FProc) then
  101.     FProc(AName);
  102. end;
  103. procedure TProgressControlProperty.GetValues(Proc: TGetStrProc);
  104. begin
  105.   FProc := Proc;
  106.   try
  107.     inherited GetValues(CheckComponent);
  108.   finally
  109.     FProc := nil;
  110.   end;
  111. end;
  112. { TRxDBStringProperty }
  113. function TRxDBStringProperty.GetAttributes: TPropertyAttributes;
  114. begin
  115.   Result := [paValueList, paSortList, paMultiSelect];
  116. end;
  117. procedure TRxDBStringProperty.GetValues(Proc: TGetStrProc);
  118. var
  119.   I: Integer;
  120.   Values: TStringList;
  121. begin
  122.   Values := TStringList.Create;
  123.   try
  124.     GetValueList(Values);
  125.     for I := 0 to Values.Count - 1 do Proc(Values[I]);
  126.   finally
  127.     Values.Free;
  128.   end;
  129. end;
  130. procedure TRxDBStringProperty.GetValueList(List: TStrings);
  131. begin
  132. end;
  133. end.