⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 voldbreg.pas

📁 dephi对Dbgrid控件的显示、控制
💻 PAS
字号:
//---------------------------------------------------------------------------
//  Registering unit for Volga components
//---------------------------------------------------------------------------
unit VolDBReg;

interface
uses Classes, TypInfo,
  {$IFDEF VER140} DesignIntf, DesignEditors,
{$ELSE}{$IFDEF VER150} DesignIntf, DesignEditors,
  {$ELSE} DsgnIntf, {$ENDIF}
  {$ENDIF}
 DB;

{ TVolgaFieldProperty}
type
  TVolgaFieldProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValueList(List: TStrings); virtual;
    procedure GetValues(Proc: TGetStrProc); override;
  end;

{ TVolgaSourceFieldProperty }

  TVolgaSourceFieldProperty = class(TVolgaFieldProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;

{ TVolgaLookupFieldProperty }

  TVolgaLookupFieldProperty = class(TVolgaFieldProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;

procedure Register;

implementation

uses VolDBGrid, VolColEditor, VolDBEdit, VolCalend, VolFndEd, VolPeriod, VolMeter;

procedure Register;
begin
  RegisterComponents('Volga', [TVolgaDBGrid, TVolgaDBEdit, TVolgaCalendar,
    TVolgaFindEdit, TVolgaPeriod, TVolgaMeter]);

  RegisterPropertyEditor(TypeInfo(string), TVolgaLookupProperties, 'SourceKeyField', TVolgaSourceFieldProperty);
  RegisterPropertyEditor(TypeInfo(string), TVolgaLookupProperties, 'LookupKeyField', TVolgaLookupFieldProperty);
  RegisterPropertyEditor(TypeInfo(string), TVolgaLookupProperties, 'ListFieldNames', TVolgaLookupFieldProperty);

  RegisterComponentEditor(TVolgaDBGrid, TVolgaDBGridEditor);
  RegisterPropertyEditor(TypeInfo(TCollection), TVolgaDBGrid, 'Columns',
    TVolgaDBGridColumnsProperty);
  RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'FieldName', TVolgaColumnDataFieldProperty);
  RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'LookupKeyField', TVolgaColumnDataFieldProperty);
  RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'LookupLinkField', TVolgaColumnLookupKeyProperty);
  RegisterPropertyEditor(TypeInfo(string), TVolgaColumn, 'LookupDropDownFields', TVolgaColumnLookupKeyProperty);
end;

{ TVolgaFieldProperty }

function TVolgaFieldProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paValueList, paSortList, paMultiSelect];
end;

procedure TVolgaFieldProperty.GetValueList(List: TStrings);
begin
end;

procedure TVolgaFieldProperty.GetValues(Proc: TGetStrProc);
var
  I: Integer;
  Values: TStringList;
begin
  Values := TStringList.Create;
  try
    GetValueList(Values);
    for I := 0 to Values.Count - 1 do
      Proc(Values[I]);
  finally
    Values.Free;
  end;
end;

{ TVolgaSourceFieldProperty }

procedure TVolgaSourceFieldProperty.GetValueList(List: TStrings);
var
  AEdit: TVolgaDBEdit;
  DataSet: TDataSet;
begin
  AEdit := (GetComponent(0) as VolDBEdit.TVolgaLookupProperties).Owner;
  if (AEdit = nil) then Exit;
  if AEdit.DataSource = nil then Exit;
  DataSet := AEdit.DataSource.DataSet;
  if (DataSet <> nil) then
    DataSet.GetFieldNames(List);
end;

{ TVolgaLookupFieldProperty }

procedure TVolgaLookupFieldProperty.GetValueList(List: TStrings);
var
  AEdit: TVolgaDBEdit;
  DataSet: TDataSet;
begin
  AEdit := (GetComponent(0) as VolDBEdit.TVolgaLookupProperties).Owner;
  if (AEdit = nil) then Exit;
  DataSet := AEdit.LookupDataSet;
  if (DataSet <> nil) then
    DataSet.GetFieldNames(List);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -