有关DLL的创建和调用编程入门的问题(50分)

  • 主题发起人 主题发起人 ftb
  • 开始时间 开始时间
F

ftb

Unregistered / Unconfirmed
GUEST, unregistred user!
请问一下各位仁兄:<br> 能不能编一个带有控件的DLL呢??比如带有TQUERY、<br>TFORM等,可以给一个例子吗??
 
我也想知道,知道的请发到lpzst@163.com或者贴出源码也没关系啊
 
你有看过《Delphi 5 开发人员指南》这本书吗?<br>里面的DLL部分讲得比较多,而且例子的源码也在网上找得到。<br>http://202.96.70.229/cakk/delphi/doc/delphi_5开发人员指南-source.zip<br>
 
可以举个例子吗??darnis
 
当然是可以的。比如你的DLL里有个过程叫做SHOWMYFORM,在这个函数里面,你就可以声明<br>一个FORM为FR1(这个FORM的UNIT文件必须包含在DLL的USES语句当中),然后用FR1。SHOWMODAL<br>就可以了。
 
sentiment:可以详细点吗?
 
//以下为DLL的写法<br>//TFORM1在名为UFOR1的UNIT单元中定义。<br>library FormDll;<br>uses<br>&nbsp; SysUtils,<br>&nbsp; Classes,<br>&nbsp; Windows,<br>&nbsp; Forms,<br>&nbsp; UForm1 in 'UForm1.pas' {Form1};<br><br>{$R *.RES}<br>var<br>&nbsp; SaveExit: Pointer;<br>procedure LibExit;<br>begin<br>&nbsp; ExitProc := SaveExit;<br>end;<br><br>Function ShowForm:Integer;<br>Begin<br>&nbsp; &nbsp;Form1:=TForm1.Create(Application);<br>&nbsp; &nbsp;ShowForm:=Form1.ShowModal;<br>&nbsp; &nbsp;Form1.Free;<br>End;<br><br>Exports<br>&nbsp; &nbsp;ShowForm;<br><br>begin<br>&nbsp; SaveExit := ExitProc;<br>&nbsp; ExitProc := @LibExit;<br>end.<br><br>//以下是调用<br>unit DllApp;<br><br>interface<br><br>uses<br>&nbsp; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br>&nbsp; StdCtrls;<br><br>type<br>&nbsp; TForm1 = class(TForm)<br>&nbsp; &nbsp; Button1: TButton;<br>&nbsp; &nbsp; procedure Button1Click(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br><br>{$R *.DFM}<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>Var h:THandle;<br>&nbsp; &nbsp; PShowForm:Procedure;<br>begin<br>&nbsp; &nbsp;h:=LoadLibrary('FormDll.Dll');<br>&nbsp; &nbsp;if h&lt;&gt;0 then<br>&nbsp; &nbsp;Begin<br>&nbsp; &nbsp; &nbsp; @PShowForm:=GetProcAddress(h,'ShowForm');<br>&nbsp; &nbsp; &nbsp; PShowForm;<br>&nbsp; &nbsp; &nbsp; FreeLibrary(h);<br>&nbsp; &nbsp;End;<br>end;<br><br>end.
 
那form里带有query而且query里的参数可以修改的呢??如:<br>select * <br>from 表名<br>where 字段名称=:变量<br><br>我想变量可以修改,怎办??<br>回答正确,给你50分。
 
Query2.SQL.Clear;<br>Query2.SQL.Add('select * from 表名 where 字段名称=:变量');<br>Query2.ParamByName('变量').AsString:='你的变量内容';//或Query2.Params[0].AsString := '你的变量内容';<br>Query2.Open;
 
//好吧,我在麻烦一下,为了50分呀。<br>步骤:<br>1、在你的FORM里面加一个QUERY(NAME=QUERY1)。<br>2、在你的DLL中再加一个导出函数<br>PROCEDURE SETQUERY(SQLSTR:PCHAR);<br>BEGIN<br>//创建FORM1,<br>&nbsp;FORM1.QUERY1.SQL=STRING(SQLSTR);<br>&nbsp;FORM1.QUERY1.OPEN;<br>END;<br>3、在调用DLL的单元中,申明P:PROCEDURE(X:PCHAR);<br>然后和我前面给出的例子完全一样,只是将PSHOWFORM这句改成P(PCHAR(SELECT * FROM TABLENAME));<br>4、应当注意的是,你调用DLL的话,数据库的句柄不会缺省地传递到DLL中。<br>好了,给分吧。
 
多人接受答案了。
 
后退
顶部