dll使用的疑惑:每个dll都要做独立的数据库连接吗? (50分)

  • 主题发起人 主题发起人 jdelphi
  • 开始时间 开始时间
J

jdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
不使用dll,可以建立DataModal,来统一调用一些资源,如数据库类的、图标类的。
如果把每个窗体都做成一个dll调用,那么每个窗体就都需要一套独立的数据库、图标?
怎样复用,像DataModal类似
 
这个不太熟,帮你顶一下
 
当参数传进来就可以了,
Liberary Dll;
uses DB,ADODB...;
procedure call(con:TADOConnection;...)
 
可以用Bpl
 
用Bpl,参见台湾一高人写的文章:http://www2.borland.com.tw/tw/reference9.html
但我有使用它介绍的方法时,RegisterClass和GetClass函数时总不成功,你们谁研究成功了不要忘了给我的Liuxf99@21cn.com回个贴子!!
 
设计在DLL中设计窗体并实现对数据库(ORACLE)的操作,如果Database放在
此窗体上,Query的DatabaseName指向此Database,设置好Database属性后,使用
主程序调用此DLL,可正常实现数据操作,但我想使此Database可供多个DLL使用,
因此把Database移到主程序中,但当调用时,总是出现数据库登陆框,要求输入
用户名和密码,不知道是不是有什么属性没有设好还是根本就DLL中无法共享Database,
请各位指教!!!

主界面用一个TDATABASE,连接数据库,DATABASENAME为'abc'(这个名字从来不用!)
在params属性里写
username=system
password=manager
然后 loginprompt 为 false,就可以。

DLL里用一个TDATABASE,一个TQUERY.TDATABASE 的 DATABASENAME 为'tt',TQUERY 的 DATABASENAME 也为'tt'
TDATABASE 除了给一个 DATABASENAME ,其他什么也不用管。

程序里这样写:
DLL:
exports p_showdata;
procedure p_showdata(dd : TDatabase; f : HWnd) ;
begin
application.Handle := f;

form2 := Tform2.Create(application);
form2.Database1.Handle := dd.Handle;//赋句柄就行了,以前说错了,不好意思!
form2.showmodal;
form2.free;
form2.Database1.Handle := 0;

application.Handle := 0;
end;

调用程序:
procedure TForm1.Button1Click(Sender: TObject);
var
alib : Thandle;
proc : Procedure(a : Tdatabase; f : HWnd);
begin
alib := LoadLibrary('./dll');
if alib >= 32 then
begin
proc := GetProcAddress(alib,'p_showdata');
proc(Database1,Application.Handle);
end;
freelibrary(alib);
end;
 
将TDataBase作为参数传入Dll
 
library Sjbf;
uses
ADODB;
{$R *.res}

Function SetConnection(fadoConn:TADOConnection):Boolean;
begin
adoconn:=fadoConn;
result := True;
end;
 
支持用Bpl,在Delphi中比dll好用多了。
 
看了 LoveBorland提供的网址,哎……叹为观止!学习学习!
看了楼下的,……哎!!!!!!!!!!!!!!!!
谁知道有没有关于bpl下载?
 
看了 LoveBorland提供的网址,发现自己在糟蹋Delphi
 
后退
顶部