我想用一个有窗体的DLL完成数据查询的任务,谁有这方面的例子,请给我一个!不胜感谢!

解决方案 »

  1.   


    动态库代码如下:
    library MyForms;uses
      SysUtils,Classes,Forms,
      DLLForm in 'DLLForm.pas' {FormDLL};function ShowForm:Integer;stdcall;
      var
        FormDll:TFormDLL; 
      begin
        FormDll:=TFormDll.Create(Application);
        Result:=FormDll.showmodal;
        FormDll.Free;
      end;
      exports
          ShowForm;
    {$R *.res}begin
    end.
    动态库中的窗体上主要有ADOConnection1,ADOQuery1,DataSource1,DBGrid1,BitBtn1,BitBtn2等控件;窗体代码如下:
    unit DLLForm;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Buttons, DB, ADODB, Grids, DBGrids, ActiveX,
      DBClient, MConnect, SConnect, DBTables;type
      TFormDLL = class(TForm)
        Panel1: TPanel;
        BitBtn1: TBitBtn;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        BitBtn2: TBitBtn;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        procedure BitBtn1Click(Sender: TObject);
        procedure BitBtn2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      FormDLL: TFormDLL;
    implementation
    {$R *.dfm}
    procedure TFormDLL.BitBtn1Click(Sender: TObject);
    begin
      Close;
    end;procedure TFormDLL.BitBtn2Click(Sender: TObject);
    begin
      FormDLL.ADOQuery1.Active:=False;  
      FormDLL.ADOQuery1.SQL.Clear;
      FormDLL.ADOQuery1.SQL.Add('select * from test');
      FormDLL.ADOQuery1.Open;
    end;
    initialization
      CoInitialize(nil);
    finalization
      CoUnInitialize;
    end.
    在应用程序中调用该DLL,应用程序代码如下:
    unit UseDLL;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ADODB,ActiveX, DB;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      function ShowForm:Integer;stdcall;
      external'myforms.dll';
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowForm;//调用动态库myforms.dll中的函数
    end;end.