ion TPackage.GetIDEInfo(Index: Integer): TIDEInfo; begin if (Index in [0..(FPageInfos.Count - 1)]) then begin Result := TIDEInfo(FPageInfos[Index]^); end; end;
procedure TForm1.Button1Click(Sender: TObject); var I : Integer; begin if OpenDialog1.Execute then begin FreePack; FPack := TPackage.Create(OpenDialog1.FileName); FPack.RegClassInPackage; end; ListBox1.Items.Clear; for i := 0 to FPack.IDEInfoCount - 1 do begin ListBox1.Items.Add(FPack.IDEInfo[I].iClass.ClassName); end; Memo1.Lines.Clear; Memo1.Lines.Add(''''------ContainsUnitList:-------''''); for i := 0 to FPack.ContainsUnit.Count - 1 do begin Memo1.Lines.Add(FPack.ContainsUnit[I]); end; Memo1.Lines.Add(''''------DcpBpiNameList:-------''''); for i := 0 to FPack.DcpBpiName.Count - 1 do begin Memo1.Lines.Add(FPack.DcpBpiName[I]); end; Memo1.Lines.Add(''''--------RequiresPackageList:---------''''); for i := 0 to FPack.RequiresPackage.Count - 1 do begin Memo1.Lines.Add(FPack.RequiresPackage[I]); end; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FreePack; end;
procedure TForm1.Button2Click(Sender: TObject); var Ctrl : TControl; begin if (ListBox1.ItemIndex <> -1) and (FPack <> nil) then begin //判断如果不是TControl的子类创建了也看不见,就不创建了 if (FPack.IDEInfo[ListBox1.ItemIndex].iClass.InheritsFrom(TControl)) then begin Ctrl := nil; try Ctrl := TControl(FPack.IDEInfo[ListBox1.ItemIndex].iClass.Create(Self)); Ctrl.Parent := Panel1; Ctrl.SetBounds(0, 0, 100, 100); Ctrl.Visible := True; except
end; end; end; end;
procedure TForm1.FreePack; var I : Integer; begin for i := Panel1.ControlCount - 1 downto 0 do Panel1.Controls[i].Free; FreeAndNil(FPack); end;