unit PackForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Mask,
DBCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
DBEdit1: TDBEdit;
Chart1: TChart;
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
var
ContNode, ReqNode: TTreeNode;
procedure ShowInfoProc (const Name: string;
NameType: TNameType; Flags: Byte; Param: Pointer);
var
FlagStr: string;
begin
FlagStr := ' ';
if Flags and ufMainUnit <> 0 then
FlagStr := FlagStr + 'Main Unit ';
if Flags and ufPackageUnit <> 0 then
FlagStr := FlagStr + 'Package Unit ';
if Flags and ufWeakUnit <> 0 then
FlagStr := FlagStr + 'Weak Unit ';
if FlagStr <> ' ' then
FlagStr := ' (' + FlagStr + ')';
with Form1.TreeView1.Items do
case NameType of
ntContainsUnit:
AddChild (ContNode, Name + FlagStr);
ntRequiresPackage:
AddChild (ReqNode, Name);
end;
end;
function ForEachModule (HInstance: Longint;
Data: Pointer): Boolean;
var
Flags: Integer;
ModuleName, ModuleDesc: string;
ModuleNode: TTreeNode;
begin
with Form1.TreeView1.Items do
begin
SetLength (ModuleName, 200);
GetModuleFileName (HInstance,
PChar (ModuleName), Length (ModuleName));
ModuleName := PChar (ModuleName);
ModuleNode := Add (nil, ModuleName);
ModuleDesc := GetPackageDescription (PChar (ModuleName));
ContNode := AddChild (ModuleNode, 'Contains');
ReqNode := AddChild (ModuleNode, 'Requires');
GetPackageInfo (HInstance, nil,
Flags, ShowInfoProc);
if ModuleDesc <> '' then
begin
AddChild (ModuleNode,
'Description: ' + ModuleDesc);
if Flags and pfDesignOnly = pfDesignOnly then
AddChild (ModuleNode, 'Design Only');
if Flags and pfRunOnly = pfRunOnly then
AddChild (ModuleNode, 'Run Only');
end;
end;
Result := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
EnumModules(ForEachModule, nil);
end;
end.
|