?? gridehed.pas
字號:
{*******************************************************}
{ }
{ EhLib v1.56 }
{ Design window for TDBGridEh }
{ }
{ Copyright (c) 1998, 2000 by Dmitry V. Bolshakov }
{ }
{*******************************************************}
unit GridEhEd;
{$I EhLib.Inc}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
{$IFDEF EH_LIB_4} ImgList,{$ENDIF}
StdCtrls, ComCtrls, ToolWin, Menus, DBGridEh, DBGrids,
DsgnIntf, DsgnWnds, LibIntf {$IFNDEF EH_LIB_35} ,ColnEdit{$ENDIF} {, dbugintf};
type
TDBGridEhColumnsEditor = class(TDesignWindow)
ToolBar1: TToolBar;
tbAddNew: TToolButton;
tbDeleteSelected: TToolButton;
ToolButton3: TToolButton;
tbAddAllFields: TToolButton;
tbRestoreDefaults: TToolButton;
ImageList1: TImageList;
PopupMenu1: TPopupMenu;
miAddNew: TMenuItem;
miDeleteSelected: TMenuItem;
miAddAllFields: TMenuItem;
miRestoreDefaults: TMenuItem;
miSelectAll: TMenuItem;
N1: TMenuItem;
ListView1: TListView;
tbMoveUp: TToolButton;
tbMoveDown: TToolButton;
ToolButton4: TToolButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure tbAddNewClick(Sender: TObject);
procedure tbDeleteSelectedClick(Sender: TObject);
procedure tbAddAllFieldsClick(Sender: TObject);
procedure tbRestoreDefaultsClick(Sender: TObject);
procedure ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure FormResize(Sender: TObject);
procedure miAddNewClick(Sender: TObject);
procedure miDeleteSelectedClick(Sender: TObject);
procedure miSelectAllClick(Sender: TObject);
procedure miAddAllFieldsClick(Sender: TObject);
procedure miRestoreDefaultsClick(Sender: TObject);
procedure tbMoveUpClick(Sender: TObject);
procedure tbMoveDownClick(Sender: TObject);
private
FDBGridEh:TDBGridEh;
function CheckCollection: Boolean;
procedure SetDBGridEh(const Value: TDBGridEh);
procedure UpdateData;
procedure Copy;
procedure Cut;
procedure Paste;
protected
function UniqueName(Component: TComponent): string; override;
procedure Activated; override;
{ Private declarations }
public
procedure EditAction(Action: TEditAction); override;
procedure FormModified; override;
procedure FormClosed(Form: TCustomForm); override;
function GetEditState: TEditState; override;
{$IFDEF EH_LIB_4} {Borland Delphi 4.0 or C++ Builder 4.0}
procedure ComponentDeleted(Component: IPersistent); override;
{$ELSE}
procedure ComponentDeleted(Component: TComponent); override;
{$ENDIF}
property DBGridEh: TDBGridEh read FDBGridEh
write SetDBGridEh;
{ Public declarations }
end;
{ TDBGridEhColumnsProperty }
TDBGridEhColumnsProperty = class(TPropertyEditor)
function GetAttributes: TPropertyAttributes; override;
function GetValue: string; override;
procedure Edit; override;
end;
{ TDBGridEhEditor }
TDBGridEhEditor = class(TComponentEditor)
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
{ TDBGridEhFieldProperty }
TDBGridEhFieldProperty = class(TStringProperty)
public
function GetAttributes: TPropertyAttributes; override;
procedure GetValueList(List: TStrings);
procedure GetValues(Proc: TGetStrProc); override;
end;
{$IFNDEF EH_LIB_35}
TColumnsEhFootersProperty = class(TCollectionProperty)
public
procedure Edit; override;
end;
TColumnsEhFootersEditor = class(TCollectionEditor)
public
procedure ComponentDeleted(Component: TComponent); override;
end;
{$ENDIF}
var
DBGridEhColumnsEditor: TDBGridEhColumnsEditor;
//procedure ShowItemsEditor({Designer: TDesigner;}
// ADBGridEh: TDBGridEh);
implementation
{$R *.DFM}
{$IFDEF EH_LIB_4} {Borland Delphi 4.0 or C++ Builder 4.0}
type
TDesigner = IDesigner;
TFormDesigner = IFormDesigner;
{$ENDIF}
{$IFNDEF EH_LIB_5}
type
TDesignerSelectionList = TComponentList;
{$ENDIF}
{$IFNDEF EH_LIB_35}
type
TPersistentCracker = class(TPersistent);
procedure TColumnsEhFootersProperty.Edit;
var
Obj: TPersistent;
begin
Obj := GetComponent(0);
while (Obj <> nil) and not (Obj is TComponent) do
Obj := TPersistentCracker(Obj).GetOwner;
ShowCollectionEditorClass(Designer, GetEditorClass,
TComponent(Obj), TCollection(GetOrdValue), GetName);
end;
procedure TColumnsEhFootersEditor.ComponentDeleted(Component: TComponent);
begin
inherited;
if Self.Component = Component then
begin
Collection := nil; // Component is already in its destructor; collection is gone
Self.Component := nil;
Close;
end;
end;
{$ENDIF}
function FindEditor(ADBGridEh: TDBGridEh): TDBGridEhColumnsEditor;
var
I: Integer;
begin
Result := nil;
for I := 0 to Screen.FormCount - 1 do begin
if Screen.Forms[I] is TDBGridEhColumnsEditor then begin
if TDBGridEhColumnsEditor(Screen.Forms[I]).DBGridEh = ADBGridEh then
begin
Result := TDBGridEhColumnsEditor(Screen.Forms[I]);
Break;
end;
end;
end;
end;
procedure ShowItemsEditor(Designer: TDesigner;
ADBGridEh: TDBGridEh);
var
Editor: TDBGridEhColumnsEditor;
begin
if ADBGridEh = nil then Exit;
Editor := FindEditor(ADBGridEh);
if Editor = nil then begin
Editor := TDBGridEhColumnsEditor.Create(Application);
try
Editor.Designer := TFormDesigner(Designer);
Editor.DBGridEh := ADBGridEh;
Editor.Show;
except
Editor.Free;
raise;
end;
end
else begin
Editor.Show;
if Editor.WindowState = wsMinimized then
Editor.WindowState := wsNormal;
end;
end;
{ TDBGridColumnsEditor }
function TDBGridEhColumnsEditor.CheckCollection: Boolean;
begin
Result := (DBGridEh <> nil) and (DBGridEh.Columns <> nil)
and (Designer.Form <> nil);
end;
procedure TDBGridEhColumnsEditor.SetDBGridEh(const Value: TDBGridEh);
begin
if FDBGridEh <> Value then begin
FDBGridEh := Value;
UpdateData;
end;
end;
procedure TDBGridEhColumnsEditor.UpdateData;
var
Empty,Modified: Boolean;
i:Integer;
ListItem: TListItem;
begin
if CheckCollection then begin
Caption := Format('Editing %s.Columns', [DBGridEh.Name]);
Empty := DBGridEh.Columns.Count = 0;
end
else Empty := True;
if Empty then begin
ListView1.Items.Clear;
end
else begin
Modified := False;
if (DBGridEh.Columns.Count <> ListView1.Items.Count) then Modified := True;
if (Modified = False) then
for i := 0 to DBGridEh.Columns.Count - 1 do
if (ListView1.Items[i].Data <> DBGridEh.Columns[i]) then begin
Modified := True;
Break;
end;
if (Modified = True) then begin
ListView1.Items.BeginUpdate;
ListView1.Items.Clear;
try
if (DBGridEh.Columns.State = csCustomized) then begin
for i := 0 to DBGridEh.Columns.Count - 1 do begin
ListItem := ListView1.Items.Add;
ListItem.Caption := IntToStr(i) + ' - ' + DBGridEh.Columns[i].DisplayName;
ListItem.Data := DBGridEh.Columns[i];
end;
end;
finally
ListView1.Items.EndUpdate;
end;
end else // 青泐腩忸
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -