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

📄 ctrlsvclreg.pas

📁 天涯進銷存系統
💻 PAS
字号:
unit CtrlsVclReg;

interface

uses
  Classes, Controls, DesignIntf, DesignEditors, VCLEditors,
  TypInfo, Db, ColnEdit;

procedure Register;

implementation

uses
  LBCtrls, LBDBCtrls, LBDBGrid, LBCalen, LBDBScrollBar, LBCurrencyCtrls,
  LBDBCurrencyCtrls, LBTrayIcon, LBMorphBmp, LBMorphButton;
  
type
  TListFieldProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValueList(List: TStrings); virtual;
    procedure GetValues(Proc: TGetStrProc); override;
    function GetDataSourcePropName: string; virtual;
  end;


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

function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
var
  PropInfo: PPropInfo;
begin
  Result := nil;
  PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, PropName);
  if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass) then
    Result := TObject(GetOrdProp(Instance, PropInfo)) as TPersistent;
end;

procedure TListFieldProperty.GetValueList(List: TStrings);
var
  DataSource: TDataSource;
begin
  DataSource := GetPropertyValue(GetComponent(0), GetDataSourcePropName) as TDataSource;
  if (DataSource <> nil) and (DataSource.DataSet <> nil) then
    DataSource.DataSet.GetFieldNames(List);
end;

procedure TListFieldProperty.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;

function TListFieldProperty.GetDataSourcePropName: string;
begin
  Result := 'ListSource';
end;

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

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

procedure TLBDBGridFieldProperty.GetValueList(List: TStrings);
var
  Lbg : TLBCustomDBGrid;
begin
  if (GetComponent(0) = nil) then Exit;
  if (GetComponent(0) is TLBColumn) then
    Lbg := (GetComponent(0) as TLBColumn).Grid
  else Exit;

  if (Lbg <> nil) and (TLBCustomDBGrid(Lbg).DataSource <> nil) and (TLBCustomDBGrid(Lbg).DataSource.DataSet <> nil) then
       TLBCustomDBGrid(Lbg).DataSource.DataSet.GetFieldNames(List);
end;

procedure TLBDBGridFieldProperty.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;
  

procedure Register;
begin
  RegisterComponents('LBCtrlsVcl', [TLBLabel]);
  RegisterComponents('LBCtrlsVcl', [TLBEdit]);
  RegisterComponents('LBCtrlsVcl', [TLBCombobox]);
  RegisterComponents('LBCtrlsVcl', [TLBButton]);
  RegisterComponents('LBCtrlsVcl', [TLBSpeecButton]);
  RegisterComponents('LBCtrlsVcl', [TLBCalen]);
  RegisterComponents('LBCtrlsVcl', [TLBNumberEdit]);
  RegisterComponents('LBCtrlsVcl', [TLBCheckBox]);
  RegisterComponents('LBCtrlsVcl', [TLBEditButton]);
  RegisterComponents('LBCtrlsVcl', [TLBCurrencyLabel]);
  RegisterComponents('LBCtrlsVcl', [TLBCurrencyEdit]);
  RegisterComponents('LBCtrlsVcl', [TLBRegulator]);
  RegisterComponents('LBCtrlsVcl', [TLBMorphButton]);
  RegisterComponents('LBCtrlsVcl', [TLBListBox]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBEdit]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBCombobox]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBNumberEdit]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBCheckBox]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBGrid]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBCalen]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBScrollBar]);
  RegisterComponents('LBDBCtrlsVcl', [TLBDBCurrencyEdit]);

  RegisterComponents('LBSysVcl', [TLBTrayIcon]);

  RegisterPropertyEditor(TypeInfo(string), TLBColumn, 'FieldName', TLBDBGridFieldProperty);
//  RegisterComponentEditor(TLBDBGrid, TCollectionEditor);
end;

end.

⌨️ 快捷键说明

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