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

📄 dewform.pas

📁 Delphi高级开发指南是开发程序的好帮手
💻 PAS
字号:
unit DEWForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls;

type
  TDelExForm = class(TForm)
    Panel1: TPanel;
    TreeView: TTreeView;
    BtnParent: TButton;
    BtnOwner: TButton;
    BtnSave: TButton;
    SaveDialog1: TSaveDialog;
    BtnClose: TButton;
    procedure BtnParentClick(Sender: TObject);
    procedure BtnOwnerClick(Sender: TObject);
    procedure BtnSaveClick(Sender: TObject);
    procedure BtnCloseClick(Sender: TObject);
  private
    { Private declarations }
  public
    procedure AddChild (Node: TTreeNode;
      Control: TWinControl);
    procedure AddOwned (Node: TTreeNode;
      Component: TComponent);
  end;

var
  DelExForm: TDelExForm;

implementation

{$R *.DFM}

procedure TDelExForm.BtnParentClick(Sender: TObject);
var
 I: Integer;
 Node: TTreeNode;
begin
  TreeView.Items.BeginUpdate;
  Screen.Cursor := crHourGlass;
  try
    TreeView.Items.Clear;
    for I := 0 to Screen.FormCount - 1do
    begin
      Node:= TreeView.Items.AddChild (nil,
        Format ('%s (%s)', [
          Screen.Forms[I].Name,
          Screen.Forms[I].ClassName]));
      AddChild (Node, Screen.Forms[I]);
    end;
  finally
    TreeView.Items.EndUpdate;
    Screen.Cursor := crDefault;
  end;
end;

procedure TDelExForm.AddChild (
  Node: TTreeNode; Control: TWinControl);
var
  I: Integer;
  ChildNode: TTreeNode;
begin
  for I := 0 to Control.ControlCount - 1do
  begin
    ChildNode := TreeView.Items.AddChild (Node,
      Format ('%s (%s)', [
        Control.Controls[I].Name,
        Control.Controls[I].ClassName]));
    if Control.Controls[I] is TWinControl then
      AddChild (ChildNode, TWinControl (
        Control.Controls[I]));
  end;
end;

procedure TDelExForm.BtnOwnerClick(Sender: TObject);
begin
  TreeView.Items.BeginUpdate;
  Screen.Cursor := crHourGlass;
  try
    TreeView.Items.Clear;
    AddOwned (nil, Application);
  finally
    TreeView.Items.EndUpdate;
    Screen.Cursor := crDefault;
  end;
end;

procedure TDelExForm.AddOwned (
  Node: TTreeNode; Component: TComponent);
var
  I: Integer;
  ChildNode: TTreeNode;
begin
  for I := 0 to Component.ComponentCount - 1 do
  begin
    ChildNode := TreeView.Items.AddChild (Node,
      Format ('%s (%s)', [
        Component.Components[I].Name,
        Component.Components[I].ClassName]));
    AddOwned (ChildNode, Component.Components[I]);
  end;
end;

procedure TDelExForm.BtnSaveClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
    TreeView.SaveToFile (SaveDialog1.FileName);
end;

procedure TDelExForm.BtnCloseClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

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