各位高手:
     我自已写了一个packages ,并包也安装好了,包名为:test,单元名为:testabc,有一个窗体为名为:testform.我新建了一个application 程序,怎样在程序里调用testform.show语句.请高手指教.

解决方案 »

  1.   

    编译时project-options-backages中build with runtime packages要勾上
    下面是我写的实验的
    unit Unit11;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Menus, Grids,  ComCtrls;type
      TtextClass = class of tff;
      Tff = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
      function CreateFormObject(AClassName, ACaption: string): Boolean;
        { Public declarations }
      end;var
      ff: Tff;
      module:HMODULE;
    implementation{$R *.DFM}
    function GetForm(AClassName: string; ACaption: string = ''): TForm;
    //根据FormName和Caption确定Form。
    var
      i: Integer;
      FForm: TForm;
    begin
      Result := nil;
      for i := 0 to Screen.FormCount - 1 do
      begin
        FForm := Screen.Forms[i];
        if (CompareText(FForm.ClassName, AClassName) = 0)
          and ((ACaption = '') or (CompareText(FForm.Caption, ACaption) = 0)) then
        begin
          Result := FForm;
          Break;
        end;
      end;
    end;
    function Tff.CreateFormObject(AClassName, ACaption: string
      ): Boolean;
    var
      FFormClass: TtextClass;
      FForm: TForm;
    begin
      Result := False;
      FForm := GetForm(AClassName, ACaption);
      if not Assigned(FForm) then
      begin
        FFormClass := TtextClass(GetClass(AClassName));
        if FFormClass =nil then
        begin
          exit;
        end;    Screen.Cursor := crHourglass;
        try
          try
            FForm := FFormClass.Create(application);
          except
            exit
          end;
        finally
          Screen.Cursor := crDefault;
        end;
      end;  FForm.Caption := ACaption;
      if FForm.FormStyle = fsNormal then
        FForm.Showmodal
      else
      begin
        FForm.Show;
        FForm.SetFocus;
      end;
      Result := True;
    end;
    procedure Tff.Button1Click(Sender: TObject);
    var filepath:string;
    begin
      filepath:=ExtractFilepath(application.ExeName)+'package1.bpl';
      module:=loadpackage(filepath);
      CreateFormObject('tform1','form1');
      
    end;procedure Tff.Button2Click(Sender: TObject);
    begin
      UnloadPackage(module);
    end;end.
    包中的
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}
    function CsRegisterClass(AClass: TPersistentClass; ModuleInstance: LongWord): Boolean;const
      BufferSize=512;begin
      Result:=true;
      RegisterClass(AClass);end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      self.close;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=cafree;
    end;initialization
      CsRegisterClass(TForm1,HInstance);finalization
      UnRegisterClass(TForm1);
    end.