📄 dxmdsreg.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 + -