如题
delphi中bpl里传值怎么传?

解决方案 »

  1.   

    建议楼主应该把问题的范围说清楚一些。是主程序EXE向BPL传参数,还是BPL与BPL之间传递,还是BPL向主EXE传递等等。
    公共变量是一种方法,另外回调也是一种方法,或者带参数直接调用BPL中相关函数或过程的地址也是一种方法。
      

  2.   

    DELPHI向BPL传值和本地是一样的。
      

  3.   

    是主程序EXE向BPL传参数和BPL向主EXE传递值。
    能否简单说明。
    先谢谢了。
      

  4.   

    BPL 的話,比較簡單,就如同不同模塊間傳值一樣做。直接無視BPL,可以將EXE+BPL看成是同一個程序。
      

  5.   

    举个简单例子出来。
    应为我在主程序里面抓不到BPL子窗体。
      

  6.   

    这个是我正在做测试的我想在主窗体中传值到BPL上帮我看看
    主窗体unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,uIPlugin, Menus, ActnPopup, ToolWin, ActnMan, ActnCtrls,
      ActnList, XPStyleActnCtrls, StdStyleActnCtrls, ExtCtrls, jpeg, ImgList,
      StdActns, ComCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        ToolBar2: TToolBar;
        ToolButton9: TToolButton;
        ToolButton1: TToolButton;
        ToolButton2: TToolButton;
        ToolButton3: TToolButton;
        ToolButton4: TToolButton;
        ToolButton5: TToolButton;
        ToolButton6: TToolButton;
        ToolButton7: TToolButton;
        ToolButton8: TToolButton;
        ToolButton10: TToolButton;
        ToolButton11: TToolButton;
        OpenDialog: TOpenDialog;
        MainMenu1: TMainMenu;
        File1: TMenuItem;
        FileNewItem: TMenuItem;
        FileOpenItem: TMenuItem;
        FileCloseItem: TMenuItem;
        FileSaveItem: TMenuItem;
        FileSaveAsItem: TMenuItem;
        N1: TMenuItem;
        FileExitItem: TMenuItem;
        Edit1: TMenuItem;
        CutItem: TMenuItem;
        CopyItem: TMenuItem;
        PasteItem: TMenuItem;
        Window1: TMenuItem;
        WindowCascadeItem: TMenuItem;
        WindowTileItem: TMenuItem;
        WindowTileItem2: TMenuItem;
        WindowMinimizeItem: TMenuItem;
        WindowArrangeItem: TMenuItem;
        Help1: TMenuItem;
        HelpAboutItem: TMenuItem;
        ActionList1: TActionList;
        FileNew1: TAction;
        FileOpen1: TAction;
        FileClose1: TWindowClose;
        FileSave1: TAction;
        FileSaveAs1: TAction;
        FileExit1: TAction;
        EditCut1: TEditCut;
        EditCopy1: TEditCopy;
        EditPaste1: TEditPaste;
        WindowCascade1: TWindowCascade;
        WindowTileHorizontal1: TWindowTileHorizontal;
        WindowTileVertical1: TWindowTileVertical;
        WindowMinimizeAll1: TWindowMinimizeAll;
        WindowArrangeAll1: TWindowArrange;
        HelpAbout1: TAction;
        ImageList1: TImageList;
        procedure ToolButton9Click(Sender: TObject);
        procedure ToolButton1Click(Sender: TObject);
      private
         AForm: TCustomForm;
         FPackageHandle: Integer;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ToolButton1Click(Sender: TObject);
    begin
       if aform.ComponentIndex=0 then exit;
       aform.Destroy;
       unloadpackage(FPackageHandle);
       FPackageHandle:=0;
    end;procedure TForm1.ToolButton9Click(Sender: TObject);
    var
      AClass: TPersistentClass;
    begin
      if FPackageHandle  = 0 then begin
        FPackageHandle := LoadPackage(ExtractFilePath(Application.ExeName) + 'pckg\package1.bpl');
        AClass := GetClass('TForm2');
        if AClass <> nil then   begin
          showmessage(inttostr(FPackageHandle));
          uiplugin.iii:=FPackageHandle;
          aform := TCustomForm(AClass.Create).Create(Application);
          AForm.Show;    end;
      end;
    end;end.PBL 窗体unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,uiplugin;type
      TForm2 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        FPackageHandle: Integer;//想在这里接值
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      edit1.Text:='test pckg' ;
    end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       close;
    end;initialization
      registerclass(TForm2);finalization
      UnRegisterClass(TForm2);end.
    然后在bpl窗体中把值传到主窗体中那有应该怎样写呢?