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

Delphi控件源码

开发平台:

Delphi

  1. {*******************************************************}
  2. {                                                       }
  3. {         Delphi VCL Extensions (RX)                    }
  4. {                                                       }
  5. {         Copyright (c) 1995, 1996 AO ROSNO             }
  6. {         Copyright (c) 1997, 1998 Master-Bank          }
  7. {                                                       }
  8. {*******************************************************}
  9. { Note:
  10.   - in Delphi 5.0 you must add DCLRX5 to the requires page of the
  11.     package you install this components into.
  12.   - in Delphi 4.0 you must add DCLRX4 to the requires page of the
  13.     package you install this components into.
  14.   - in Delphi 3.0 you must add DCLRXCTL to the requires page of the
  15.     package you install this components into.
  16.   - in C++Builder 4.0 you must add DCLRX4 to the requires page of the
  17.     package you install this components into.
  18.   - in C++Builder 3.0 you must add DCLRXCTL to the requires page of the
  19.     package you install this components into. }
  20. unit RxDBReg;
  21. {$I RX.INC}
  22. {$D-,L-,S-}
  23. interface
  24. uses Classes, RTLConsts, DesignIntf, DesignEditors, VCLEditors, SysUtils, DB;
  25. { Register data aware custom controls and components }
  26. procedure Register;
  27. implementation
  28. {$IFDEF WIN32}
  29.  {$R *.D32}
  30. {$ELSE}
  31.  {$R *.D16}
  32. {$ENDIF}
  33. uses TypInfo, RXLConst, RXDBCtrl, RXLookup, RxLogin, RXDBComb, VCLUtils,
  34.   {$IFNDEF RX_D3} DBTables, {$ENDIF} {$IFDEF DCS} SelDSFrm, {$ENDIF} 
  35.   {$IFDEF RX_D3} RxMemDS, {$ENDIF} {$IFDEF WIN32} DBRichEd, {$ENDIF} 
  36.   Consts, LibHelp, RxDsgn;
  37. { TRxFieldProperty }
  38. { For TRxDBLookupList, TRxDBLookupCombo components }
  39. type
  40.   TRxFieldProperty = class(TRxDBStringProperty)
  41.   public
  42.     procedure GetValueList(List: TStrings); override;
  43.     function GetDataSourcePropName: string; virtual;
  44.   end;
  45. function TRxFieldProperty.GetDataSourcePropName: string;
  46. begin
  47.   Result := 'LookupSource';
  48. end;
  49. procedure TRxFieldProperty.GetValueList(List: TStrings);
  50. var
  51.   Instance: TComponent;
  52.   PropInfo: PPropInfo;
  53.   DataSource: TDataSource;
  54. begin
  55.   Instance := TComponent(GetComponent(0));
  56.   PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, GetDataSourcePropName);
  57.   if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass) then
  58.   begin
  59.     DataSource := TObject(GetOrdProp(Instance, PropInfo)) as TDataSource;
  60.     if (DataSource <> nil) and (DataSource.DataSet <> nil) then
  61.       DataSource.DataSet.GetFieldNames(List);
  62.   end;
  63. end;
  64. {$IFDEF DCS}
  65. {$IFDEF RX_D3}
  66. { TMemoryDataEditor }
  67. type
  68.   TMemoryDataEditor = class(TMemDataSetEditor)
  69.   protected
  70.     function CopyStructure(Source, Dest: TDataSet): Boolean; override;
  71.   end;
  72. function TMemoryDataEditor.CopyStructure(Source, Dest: TDataSet): Boolean;
  73. begin
  74.   Result := Dest is TRxMemoryData;
  75.   if Result then
  76.     TRxMemoryData(Dest).CopyStructure(Source);
  77. end;
  78. {$ENDIF RX_D3}
  79. {$ENDIF DCS}
  80. { Designer registration }
  81. procedure Register;
  82. begin
  83. {$IFDEF RX_D4}
  84.   { Database Components are excluded from the STD SKU }
  85.   if GDAL = LongWord(-16) then Exit;
  86. {$ENDIF}
  87. { Data aware components and controls }
  88.   RegisterComponents(LoadStr(srRXDBAware), [
  89.     {$IFDEF RX_D3} TRxMemoryData, {$ENDIF}
  90.     TRxDBGrid, TRxDBLookupList, TRxDBLookupCombo, TRxLookupEdit, TDBDateEdit, 
  91.     TRxDBCalcEdit, TRxDBComboEdit, {$IFDEF WIN32} TRxDBRichEdit, {$ENDIF}
  92.     TDBStatusLabel, TRxDBComboBox]);
  93.   RegisterComponents(LoadStr(srRXTools), [TRxLoginDialog]);
  94. {$IFDEF RX_D3}
  95.   RegisterNonActiveX([TRxMemoryData, TRxDBGrid, TDBDateEdit, 
  96.     TDBStatusLabel, TRxDBComboBox, TRxDBLookupList,
  97.     TRxDBLookupCombo, TRxLookupEdit, TRxDBComboEdit, TRxDBCalcEdit, 
  98.     TRxDBRichEdit, TCustomDBComboBox, TRxLookupControl, TRxLoginDialog], 
  99.     axrComponentOnly);
  100. {$ENDIF RX_D3}
  101. { Property and component editors for data aware components }
  102.   RegisterPropertyEditor(TypeInfo(string), TRxLookupControl, 'LookupField',
  103.     TRxFieldProperty);
  104.   RegisterPropertyEditor(TypeInfo(string), TRxLookupEdit, 'LookupField',
  105.     TRxFieldProperty);
  106. {$IFDEF RX_D3}
  107.   RegisterPropertyEditor(TypeInfo(Integer), TRxDBGrid, 'RowsHeight', nil);
  108. {$IFDEF DCS}
  109.   RegisterComponentEditor(TRxMemoryData, TMemoryDataEditor);
  110. {$ENDIF DCS}
  111. {$ENDIF RX_D3}
  112. end;
  113. end.