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

📄 dxmdsreg.pas

📁 在Dephi中用于文件的输出
💻 PAS
字号:
{*******************************************************************}
{                                                                   }
{       Developer Express Visual Component Library                  }
{       ExpressMemData - CLX/VCL Edition                            }
{                                                                   }
{       Copyright (c) 1998-2008 Developer Express Inc.              }
{       ALL RIGHTS RESERVED                                         }
{                                                                   }
{   The entire contents of this file is protected by U.S. and       }
{   International Copyright Laws. Unauthorized reproduction,        }
{   reverse-engineering, and distribution of all or any portion of  }
{   the code contained in this file is strictly prohibited and may  }
{   result in severe civil and criminal penalties and will be       }
{   prosecuted to the maximum extent possible under the law.        }
{                                                                   }
{   RESTRICTIONS                                                    }
{                                                                   }
{   THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES           }
{   (DCU, OBJ, DLL, DPU, SO, ETC.) ARE CONFIDENTIAL AND PROPRIETARY }
{   TRADE SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER}
{   IS LICENSED TO DISTRIBUTE THE EXPRESSMEMDATA                    }
{   AS PART OF AN EXECUTABLE PROGRAM ONLY.                          }
{                                                                   }
{   THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED      }
{   FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE        }
{   COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE       }
{   AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT  }
{   AND PERMISSION FROM DEVELOPER EXPRESS INC.                      }
{                                                                   }
{   CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON       }
{   ADDITIONAL RESTRICTIONS.                                        }
{                                                                   }
{*******************************************************************}

unit dxmdsreg;

interface

{$I cxVer.inc}

procedure Register;

implementation

uses
{$IFDEF DELPHI6}
  DesignEditors, DesignIntf,
{$ELSE}
  DsgnIntf,
{$ENDIF}
  Windows, Classes, DB, dxmdaset, dxmdsedt, dxmdatps, ShellAPI;

const
  dxmdsVersion = '1.35';
  GetVerbSt0 = 'Field Editor ...';
  GetVerbSt1 = 'ExpressMemData Persistent Editor...';
  GetVerbSt2 = '-';
  GetVerbSt3 = 'ExpressMemData ' + dxmdsVersion;
  GetVerbSt4 = 'http://www.devexpress.com';
  GetVerbSt5 = 'Developer Express Inc.';

{TdxMemDataComponentEditor}
type
  TdxMemDataComponentEditor = class(TComponentEditor)
    procedure ExecuteVerb(Index: Integer); override;
    function GetVerb(Index: Integer): string; override;
    function GetVerbCount: Integer; override;
  end;

procedure TdxMemDataComponentEditor.ExecuteVerb(Index: Integer);
begin
  case Index of
    0:
      ShowdxMemDataEditor(TdxMemData(Component), Designer);
    1:
      ShowMemDataPersistentDesigner(TdxMemData(Component), Designer);
    3, 4, 5:
      ShellExecute(0, 'OPEN', 'http://www.devexpress.com', nil, '', SW_SHOWMAXIMIZED);
  end;
end;

function TdxMemDataComponentEditor.GetVerb(Index: Integer): string;
begin
  case Index of
    0: Result := GetVerbSt0;
    1: Result := GetVerbSt1;
    2: Result := GetVerbSt2;
    3: Result := GetVerbSt3;
    4: Result := GetVerbSt4;
    5: Result := GetVerbSt5;
  end;
end;

function TdxMemDataComponentEditor.GetVerbCount: Integer;
begin
  Result := 6;
end;

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

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

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

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

type
  TDBSortedFieldProperty = class(TDBStringProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;

procedure TDBSortedFieldProperty.GetValueList(List: TStrings);
var
  i : Integer;
begin
  with TDataSet(GetComponent(0)) do
    for i := 0 to FieldCount - 1 do
      if(Fields[i].Owner = Owner)
      and (Fields[i].FieldName <> '')then
        List.Add(Fields[i].FieldName);
end;

type
  TDBIndexedFieldProperty = class(TDBStringProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;

procedure TDBIndexedFieldProperty.GetValueList(List: TStrings);
var
  i : Integer;
  MemData: TdxMemData;
begin
  MemData := TdxMemIndex(GetComponent(0)).MemData;
  for i := 0 to MemData.FieldCount - 1 do
    if(MemData.Fields[i].Owner = MemData.Owner)
    and (MemData.Fields[i].FieldName <> '')then
      List.Add(MemData.Fields[i].FieldName);
end;

type
  TMemDataPersistentProperty = class(TClassProperty)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;

procedure TMemDataPersistentProperty.Edit;
begin
  ShowMemDataPersistentDesigner(TdxMemPersistent(GetOrdValue).MemData, Designer);
end;

function TMemDataPersistentProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paMultiSelect, paSubProperties, paDialog, paReadOnly];
end;

procedure Register;
begin
{$IFDEF DELPHI9}
  ForceDemandLoadState(dlDisable);
{$ENDIF}  

  RegisterComponents('Dev Express', [TdxMemData]);

  RegisterComponentEditor(TdxMemData, TdxMemDataComponentEditor);
  RegisterPropertyEditor(TypeInfo(string), TdxMemData, 'SortedField',
     TDBSortedFieldProperty);
  RegisterPropertyEditor(TypeInfo(string), TdxMemIndex, 'FieldName',
     TDBIndexedFieldProperty);
  RegisterPropertyEditor(TypeInfo(TdxMemPersistent), nil, '',
     TMemDataPersistentProperty);
end;

end.

⌨️ 快捷键说明

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