📄 regas.pas
字号:
{*******************************************************
By wr960204 王锐
2004/8/8
*******************************************************}
unit RegAS;
interface
uses
UnitASEdit, UnitASComboBox,
Windows, Controls, SysUtils, UnitASButtons,
UnitASBase, ColnEdit, Menus, ComCtrls, ActnList,
UnitPagesEditor, Dialogs, UnitASDBGrids,
Classes, UnitASPages, UnitAbout,
{$IFDEF VER130}
DesignIntf
{$ELSE}
DesignIntf, DesignEditors
{$ENDIF}
;
type
TPagesEditor = class(TStringProperty)
public
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;
TActivPageEditor = class(TStringProperty)
private
function ASPageControl: TASPageControl;
public
function GetAttributes: TPropertyAttributes; override;
procedure GetValues(Proc: TGetStrProc); override;
end;
TAboutEditor = class(TStringProperty)
private
public
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;
TASDBGridColumnsEditor = class(TCollectionEditor)
N1: TMenuItem;
AddAllFields1: TMenuItem;
RestoreDefaults1: TMenuItem;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
AddAllFieldsCmd: TAction;
RestoreDefaultsCmd: TAction;
procedure AddAllFieldsCmdExecute(Sender: TObject);
procedure RestoreDefaultsCmdExecute(Sender: TObject);
procedure AddAllFieldsCmdUpdate(Sender: TObject);
procedure RestoreDefaultsCmdUpdate(Sender: TObject);
private
{ Private declarations }
protected
function CanAdd(Index: Integer): Boolean; override;
public
{ Public declarations }
end;
TASDBGridColumnsProperty = class(TPropertyEditor {TClassProperty})
function GetAttributes: TPropertyAttributes; override;
function GetValue: string; override;
procedure Edit; override;
end;
{ TASDBGridEditor }
TASDBGridEditor = class(TComponentEditor)
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
{ TASPageControlEditor }
TASPageControlEditor = class(TComponentEditor)
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Application Studio', [TASPageControl, TASDBGrid,
TASActiveButton, TASEdit, TASComboBox]);
RegisterPropertyEditor(TypeInfo(TASDBGridColumns), TASDBGrid,
'Columns', TASDBGridColumnsProperty);
RegisterPropertyEditor(TypeInfo(TStrings), TASPageControl, 'Pages',
TPagesEditor);
RegisterPropertyEditor(TypeInfo(string), TASPageControl, 'ActivePage',
TActivPageEditor);
RegisterPropertyEditor(TypeInfo(string), TASBase, 'About', TAboutEditor);
RegisterPropertyEditor(TypeInfo(string), TASActiveButton, 'About',
TAboutEditor);
RegisterComponentEditor(TASDBGrid, TASDBGridEditor);
RegisterComponentEditor(TASPageControl, TASPageControlEditor);
end;
{ TPagesEditor }
procedure TPagesEditor.Edit;
var
Dlg : TFormPagesEditor;
begin
inherited Edit;
Dlg := TFormPagesEditor.Create(nil);
Dlg.PageStrs := TASPageControl(GetComponent(0)).Pages;
Dlg.ShowModal;
Dlg.Free;
end;
function TPagesEditor.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog, paReadOnly];
end;
{ TActivPageEditor }
function TActivPageEditor.GetAttributes: TPropertyAttributes;
begin
Result := [paValueList];
end;
procedure TActivPageEditor.GetValues(Proc: TGetStrProc);
var
I : Integer;
begin
for I := 0 to ASPageControl.Pages.Count - 1 do
Proc(ASPageControl.Pages[I]);
end;
function TActivPageEditor.ASPageControl: TASPageControl;
begin
Result := TASPageControl(GetComponent(0));
end;
{ TAboutEditor }
procedure TAboutEditor.Edit;
begin
//inherited Edit;
FormAbout := TFormAbout.Create(nil);
try
FormAbout.ShowModal;
finally
FormAbout.Free;
end;
end;
function TAboutEditor.GetAttributes: TPropertyAttributes;
begin
Result := [paReadOnly, paFullWidthName, paDialog];
end;
type
TCollectionCracker = class(TCollection);
TCustomASDBGridCracker = class(TASDBGrid);
TPersistentCracker = class(TPersistent);
{ TASDBGridColumnsEditor }
procedure TASDBGridColumnsEditor.AddAllFieldsCmdExecute(Sender: TObject);
var
msgValue : Word;
// i:Integer;
// Col:TColumnEh;
ASDBGrid : TASDBGrid;
begin
ASDBGrid := TASDBGrid(TCollectionCracker(Collection).GetOwner);
if not Assigned(ASDBGrid) then
Exit;
if (ASDBGrid.Columns.State = csDefault) then
ASDBGrid.Columns.State := csCustomized
else
begin
TCustomASDBGridCracker(ASDBGrid).BeginLayout;
try
if (ASDBGrid.Columns.Count > 0) then
begin
msgValue := MessageDlg('删除已存在的列吗?',
mtConfirmation, [mbYes, mbNo, mbCancel], 0);
case msgValue of
mrYes: ASDBGrid.Columns.Clear;
mrCancel: Exit;
end;
end;
//ASDBGrid.Columns.Add
////ASDBGrid.Columns.AddAllColumns(False);
finally
TCustomASDBGridCracker(ASDBGrid).EndLayout;
UpdateListbox;
end;
end;
Designer.Modified;
end;
procedure TASDBGridColumnsEditor.RestoreDefaultsCmdExecute(Sender: TObject);
var
i : Integer;
ASDBGrid : TASDBGrid;
begin
ASDBGrid := TASDBGrid(TCollectionCracker(Collection).GetOwner);
if not Assigned(ASDBGrid) then
Exit;
if (ListView1.SelCount > 0) then
begin
for i := 0 to ListView1.SelCount - 1 do
ASDBGrid.Columns[i].RestoreDefaults;
Designer.Modified;
UpdateListbox;
end;
end;
procedure TASDBGridColumnsEditor.AddAllFieldsCmdUpdate(Sender: TObject);
var
ASDBGrid : TCustomASDBGrid;
begin
ASDBGrid := TCustomASDBGrid(TCollectionCracker(Collection).GetOwner);
AddAllFieldsCmd.Enabled := Assigned(ASDBGrid) and
Assigned(ASDBGrid.DataSource) and
Assigned(ASDBGrid.Datasource.Dataset) and
(ASDBGrid.Datasource.Dataset.FieldCount > 0);
end;
procedure TASDBGridColumnsEditor.RestoreDefaultsCmdUpdate(Sender: TObject);
begin
RestoreDefaultsCmd.Enabled := ListView1.Items.Count > 0;
end;
function TASDBGridColumnsEditor.CanAdd(Index: Integer): Boolean;
var
ASDBGrid : TASDBGrid;
begin
Result := False;
ASDBGrid := TASDBGrid(TCollectionCracker(Collection).GetOwner);
if Assigned(ASDBGrid) then
Result := (ASDBGrid.Columns.State = csCustomized);
end;
{ TASDBGridColumnsProperty }
procedure TASDBGridColumnsProperty.Edit;
var
Obj : TPersistent;
begin
Obj := GetComponent(0);
while (Obj <> nil) and not (Obj is TComponent) do
Obj := TPersistentCracker(Obj).GetOwner;
ShowCollectionEditorClass(Designer, TASDBGridColumnsEditor,
TComponent(Obj),
// TCustomDBGridEh(Obj).Columns, 'Columns', [coAdd, coDelete, coMove]);
TCollection(GetOrdValue), 'Columns', [coAdd, coDelete, coMove]);
end;
function TASDBGridColumnsProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog, paReadOnly {, paSubProperties}];
end;
function TASDBGridColumnsProperty.GetValue: string;
begin
Result := Format('(%s)', [GetPropType^.Name]);
end;
{ TASDBGridEditor }
procedure TASDBGridEditor.ExecuteVerb(Index: Integer);
begin
case Index of
0:
ShowCollectionEditorClass(Designer, TASDBGridColumnsEditor, Component,
TASDBGrid(Component).Columns, 'Columns', [coAdd, coDelete, coMove]);
end;
end;
function TASDBGridEditor.GetVerb(Index: Integer): string;
begin
case Index of
0: Result := '列编辑器 ...';
end;
end;
function TASDBGridEditor.GetVerbCount: Integer;
begin
Result := 1;
end;
{ TASPageControlEditor }
procedure TASPageControlEditor.ExecuteVerb(Index: Integer);
var
Dlg : TFormPagesEditor;
begin
case Index of
0:
begin
Dlg := TFormPagesEditor.Create(nil);
Dlg.PageStrs := TASPageControl(Component).Pages;
Dlg.ShowModal;
Dlg.Free;
end;
end;
end;
function TASPageControlEditor.GetVerb(Index: Integer): string;
begin
case Index of
0: Result := '页面编辑器 ...';
end;
end;
function TASPageControlEditor.GetVerbCount: Integer;
begin
Result := 1;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -