home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 December / Chip_2001-12_cd1.bin / zkuste / delphi / kolekce / d456 / VOLGAPAK.ZIP / Source / VolDBReg.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-09-20  |  3.4 KB  |  114 lines

  1. //---------------------------------------------------------------------------
  2. //  Registering unit for Volga components
  3. //---------------------------------------------------------------------------
  4. unit VolDBReg;
  5.  
  6. interface
  7. uses Classes, TypInfo,
  8.  {$IFDEF VER140} DesignIntf, DesignEditors, {$ELSE} DsgnIntf, {$ENDIF}
  9.  DB;
  10.  
  11. { TVolgaFieldProperty}
  12. type
  13.   TVolgaFieldProperty = class(TStringProperty)
  14.   public
  15.     function GetAttributes: TPropertyAttributes; override;
  16.     procedure GetValueList(List: TStrings); virtual;
  17.     procedure GetValues(Proc: TGetStrProc); override;
  18.   end;
  19.  
  20. { TVolgaSourceFieldProperty }
  21.  
  22.   TVolgaSourceFieldProperty = class(TVolgaFieldProperty)
  23.   public
  24.     procedure GetValueList(List: TStrings); override;
  25.   end;
  26.  
  27. { TVolgaLookupFieldProperty }
  28.  
  29.   TVolgaLookupFieldProperty = class(TVolgaFieldProperty)
  30.   public
  31.     procedure GetValueList(List: TStrings); override;
  32.   end;
  33.  
  34. procedure Register;
  35.  
  36. implementation
  37.  
  38. uses VolDBGrid, VolColEditor, VolDBEdit, VolCalend, VolFndEd, VolPeriod;
  39.  
  40. procedure Register;
  41. begin
  42.   RegisterComponents('Volga', [TVolgaDBGrid, TVolgaDBEdit, TVolgaCalendar,
  43.     TVolgaFindEdit, TVolgaPeriod]);
  44.  
  45.   RegisterPropertyEditor(TypeInfo(string), TVolgaLookupProperties, 'SourceKeyField', TVolgaSourceFieldProperty);
  46.   RegisterPropertyEditor(TypeInfo(string), TVolgaLookupProperties, 'LookupKeyField', TVolgaLookupFieldProperty);
  47.   RegisterPropertyEditor(TypeInfo(string), TVolgaLookupProperties, 'ListFieldNames', TVolgaLookupFieldProperty);
  48.  
  49.   RegisterComponentEditor(TVolgaDBGrid, TVolgaDBGridEditor);
  50.   RegisterPropertyEditor(TypeInfo(TCollection), TVolgaDBGrid, 'Columns',
  51.     TVolgaDBGridColumnsProperty);
  52.   RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'FieldName', TVolgaColumnDataFieldProperty);
  53.   RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'LookupKeyField', TVolgaColumnDataFieldProperty);
  54.   RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'LookupLinkField', TVolgaColumnLookupKeyProperty);
  55.   RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'LookupDropDownFields', TVolgaColumnLookupKeyProperty);
  56. end;
  57.  
  58. { TVolgaFieldProperty }
  59.  
  60. function TVolgaFieldProperty.GetAttributes: TPropertyAttributes;
  61. begin
  62.   Result := [paValueList, paSortList, paMultiSelect];
  63. end;
  64.  
  65. procedure TVolgaFieldProperty.GetValueList(List: TStrings);
  66. begin
  67. end;
  68.  
  69. procedure TVolgaFieldProperty.GetValues(Proc: TGetStrProc);
  70. var
  71.   I: Integer;
  72.   Values: TStringList;
  73. begin
  74.   Values := TStringList.Create;
  75.   try
  76.     GetValueList(Values);
  77.     for I := 0 to Values.Count - 1 do
  78.       Proc(Values[I]);
  79.   finally
  80.     Values.Free;
  81.   end;
  82. end;
  83.  
  84. { TVolgaSourceFieldProperty }
  85.  
  86. procedure TVolgaSourceFieldProperty.GetValueList(List: TStrings);
  87. var
  88.   AEdit: TVolgaDBEdit;
  89.   DataSet: TDataSet;
  90. begin
  91.   AEdit := (GetComponent(0) as VolDBEdit.TVolgaLookupProperties).Owner;
  92.   if (AEdit = nil) then Exit;
  93.   if AEdit.DataSource = nil then Exit;
  94.   DataSet := AEdit.DataSource.DataSet;
  95.   if (DataSet <> nil) then
  96.     DataSet.GetFieldNames(List);
  97. end;
  98.  
  99. { TVolgaLookupFieldProperty }
  100.  
  101. procedure TVolgaLookupFieldProperty.GetValueList(List: TStrings);
  102. var
  103.   AEdit: TVolgaDBEdit;
  104.   DataSet: TDataSet;
  105. begin
  106.   AEdit := (GetComponent(0) as VolDBEdit.TVolgaLookupProperties).Owner;
  107.   if (AEdit = nil) then Exit;
  108.   DataSet := AEdit.LookupDataSet;
  109.   if (DataSet <> nil) then
  110.     DataSet.GetFieldNames(List);
  111. end;
  112.  
  113. end.
  114.