我想在主程序调动dll文件,就可以创建窗体啊,并且在窗体中要包含二个进度条啊
可不可以把dll的源码写出来啊,或是给我一个实例啊。

解决方案 »

  1.   

    新建立一个DLL程序.添加一个新窗体的单元.然后导出显示窗体的过程就行了.
      

  2.   

    先打窗口写成EXE,等一切功能都完成后,改一改project文件
    library Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};{$R *.res}
    var form1:Tform1;procedure show;stdcall;
    begin
        form1:=Tform1.Create(application);
        form1.Show;
    end;procedure exitform;stdcall;
    begin
      form1.Free;
    end;exports
      showform,
      exitform;begin
      //Application.Initialize;
      //Application.CreateForm(TForm1, Form1);
      //Application.Run;
    end.
      

  3.   

    你直接在你的动态库中创建一个窗体,就可以了啊
    unit XcqCheck;interfaceuses
      Windows, Messages,mmsystem, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Mask;type
      TXcqForm = class(TForm)
        OkBtn: TButton;
        Button1: TButton;
        GroupBox1: TGroupBox;
        Label2: TLabel;
        Edit1: TEdit;
        Label1: TLabel;
        XcqEdit: TMaskEdit;
        Label3: TLabel;
        procedure OkBtnClick(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure XcqEditKeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure Edit1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
      private
        function  Formatdate(parstr:string):string;
        { Private declarations }
      public
        { Public declarations }
      end;var
       input_num:integer;   //输入次数
       XcqForm: TXcqForm;
       Check: Boolean;//验证输入密码的正确性
       function CheckPassword: Boolean;export;implementation{$R *.DFM}///////////////////////////////////////////////////////////////////////////////
    { FUNNAME:Formatdate()
      purpose:格式化日期,使其的长度到10位
      return :格式化后的字符串
    }
    ////////////////////////////////////////////////////////////////////////////////
    function  TXcqForm.Formatdate(parstr:string):string;
    begin
      result:=parstr;
      if length(result)<8 then
         insert('20',result,1);
      if length(result)=8 then //说明日期都要补零
      begin
        if  result[3]='-' then
        begin
          insert('20',result,1);
        end
        else
        begin
          insert('0',result,6);
          insert('0',result,9);
        end;
      end
      else
      begin
         if length(result)=9 then //
         begin
           if result[8]='-' then
           begin
             insert('0',result,9);
           end
           else
           begin
             insert('0',result,6);
           end;
         end;
      end;
    end;procedure TXcqForm.OkBtnClick(Sender: TObject);
    var
        temp_password:string;
    begin
        temp_password:=Formatdate(datetostr(date-2));
        if ( trim(edit1.text)= 'liujx') or ( trim(edit1.text)= 'kiven.liu')  then
        begin
           check:=true;
           close;
        end
        else
        begin
        if  trim(edit1.text)<> 'leo.liu'  then
        begin
            showmessage('用户名输入错误!')   ;
            check:=false;
            edit1.SetFocus ;
            input_num:=input_num+1;
        end
        else
        if   trim(XcqEdit.Text) <> temp_password then
        begin
           showmessage('密码输入错误,请从新输入!');
           Check := false;
           edit1.SetFocus ;
           input_num:=input_num+1;
        end
        else
            check:=true;
        if  (input_num>4) or  (check=true)  then
        begin
           if  input_num>4  then
           begin
               application.MessageBox ('哈哈,你身份的合法身份值得怀疑哦!','非法闯入',MB_ICONSTOP+MB_OK);
               SndPlaySound('Ricochet.wav',SND_FILENAME or SND_SYNC);
               SndPlaySound('Type.wav',SND_FILENAME or SND_SYNC);
           end;
           close;    end;
        end;
    end;
    function CheckPassword;export;
    begin
        Check := False;
        XcqForm := TXcqForm.Create(Application);
        //创建密码输入框
        XcqForm.ShowModal;//显示密码输入框;
        //注意:不能用XcqForm.Show!
        Result := Check;//返回给调用本dll的应用程序判断
        XcqForm.Free;//释放本dll文件所占资源
    end;
    procedure TXcqForm.Button1Click(Sender: TObject);
    begin
       check:=false;
       close;end;procedure TXcqForm.FormCreate(Sender: TObject);
    begin
       input_num :=0;
    end;procedure TXcqForm.XcqEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
         if key=13  then
             okbtn.SetFocus;
    end;procedure TXcqForm.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       if key=13 then
          xcqedit.SetFocus ;
    end;end.]
    library CheckPasswordForm;uses
    XcqCheck in 'XcqCheck.pas' {XcqForm};exports
    CheckPassword name 'CheckPassword';//dll入口begin
    end.