分不够可以再加,只求可以运行的源代码!!!要求是
数据库任意,最好使Access,一个表一个字段,两行数据。
一个主窗体,上面两个Panel,分别是Pannav,Panmain,Pannav上有两个按钮,一个选择框,用来标识是否以模态方式进行显示。一个COn,用来连接数据库。按钮点击后,根据选择框的内容来确定是否以模态方式显示,当以非模态方式显示时,嵌到Panmain中去。
FirstDLl,一个按钮,一个Table,连接主窗体的COn,按钮点击后,显示第一行数据。
SecondDLl,同上,显示第二行数据。希望高手写一个小程序。发给我,小弟真是万分感谢了!!!!
[email protected]
数据库任意,最好使Access,一个表一个字段,两行数据。
一个主窗体,上面两个Panel,分别是Pannav,Panmain,Pannav上有两个按钮,一个选择框,用来标识是否以模态方式进行显示。一个COn,用来连接数据库。按钮点击后,根据选择框的内容来确定是否以模态方式显示,当以非模态方式显示时,嵌到Panmain中去。
FirstDLl,一个按钮,一个Table,连接主窗体的COn,按钮点击后,显示第一行数据。
SecondDLl,同上,显示第二行数据。希望高手写一个小程序。发给我,小弟真是万分感谢了!!!!
[email protected]
解决方案 »
- 进程监视问题!谁能提供下代码?
- 求个SQL语句,要求如下:如何查询数据库中一行记录中某几个字段的和,是每行都要求这几个字段的和
- 问个SQL语句
- adoquery查询的时候出错,ADOQuery2: Field 'communityName' not found.
- 急!!!!delphi7中两台机器怎么进行消息传递?用什么控件?
- 我在notebook控件的每一子页上放了一个image做底图,切换子页时图片总要闪一下,有办法解决吗?
- 关于DBT_DEVICEREMOVECOMPLETE的到达时间
- 请大家帮帮忙!!!~~~~
- 如何通过程序实现年份和月份的转换? 58分,非常吉利!
- 如何判定當前運行环境是win95.98.2000?diamond中dao35和dao36有何区别?
- 想转行搞餐饮业,帮我的饮食店起个名字,要有个凯字!!!各位帮忙想想:)
- 网络环境下多用户数据库程序的问题
var
DLLForm: TDLLForm;
begin
Application.Handle := AHandle;
DLLForm := TDLLForm.Create(Application); //创建并显示窗体
try
DLLForm.Caption := ACaption;
DLLForm.ShowModal; //显示方式为模式化
Result := DLLForm.calDLLCalendar.CalendarDate; //返回设定日期
finally
DLLForm.Free; //用完后卸载该窗体
end;
end; procedure TMainForm.Button1Click(Sender: TObject);
var
OneHandle : THandle; //定义一个句柄变量
begin
OneHandle := LoadLibrary('Clendar.dll'); //动态载入DLL,并返回其句柄
try
if OneHandle <> 0 then //如果载入成功则获取ShowCalendar函数的地址
@ShowCalendar := GetProcAddress(OneHandle, 'ShowCalendar');
if not (@ShowCalendar = nil) then
//如果找到该函数则在主窗体的Label1中显示DLL窗体中设定的日期
Label1.Caption := DateToStr(ShowCalendar(Application.Handle, Caption))
else
RaiseLastWin32Error;
finally
FreeLibrary(OneHandle); //调用完毕收回DLL占用的资源
end;
end;
Unit1.PAS {主叫程序单元}
Project2.DPR {DLL}
Unit2.PAS {DLL单元}
{---------- DLL 主程序 Project2.DPR ----------}library Project2;uses
SysUtils,
Classes,
Unit2 in 'Unit2.pas' {Form1};{$R *.RES}{ 下面的语句用于向调用该 DLL的程序提供调用接口 }
exports
DoTest; { 过程来自单元Unit2 }begin
end.
{---------- DLL中的单元 Unit2.PAS ----------}unit Unit2;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Menus;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;{ 本地数据库连接 }
Memo1: TMemo; { 用于显示信息 }
private
public
end;{ 该过程向外提供 }
procedure DoTest(H: THandle; { 获得调用者的句柄 }
AConn: TADOConnection;{ 获得调用者的数据库连接 }
S: string; { 获得一些文本信息 }
N: Integer); { 获得一些数值信息 }
cdecl; { 指定调用协议 } implementation{$R *.DFM}procedure DoTest(H: THandle; AConn: TADOConnection; S: string; N: Integer);
begin
Application.Handle := H; { 将过程的句柄赋值为调用者的句柄 }
{ 上面语句的作用在于, DLL的句柄和调用者的句柄相同,在任务栏中就不会 }
{ 各自出现一个任务标题了。 }
with TForm1.Create(Application) do try{ 创建窗体 }
Memo1.Lines.Append('成功调用'); { 显示一行信息 }
ADOConnection1 := AConn; { 获得数据库连接的实例 }
Memo1.Lines.Append(
ADOConnection1.ConnectionString +
' - ' + S + ' - ' + IntToStr(N)); { 根据得到的参数显示另一行信息 }
ShowModal; { 模式化显示窗体 }
finally
Free; { 调用结束时销毁窗口 }
end;
end;end.
{---------- 调用者 Project1.DPR,很普通的工程文件 ----------}program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {Form1};{$R *.RES}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
{---------- 调用者单元Unit1.PAS ----------}unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB;type
TForm1 = class(TForm)
Button1: TButton; { 按此按钮进行调用 }
ADOConnection1: TADOConnection; { 本地数据库连接,将传递给 DLL }
procedure Button1Click(Sender: TObject);{ 调用 DLL}
private
public
end;var
Form1: TForm1;implementation{$R *.DFM}{ 外部声明必须和 DLL中的参数列表一致,否则会运行时错误 }
procedure DoTest(H: THandle; { 传递句柄 }
AConn: TADOConnection; { 传递数据库连接 }
S: string; { 传递文本信息 }
N: Integer); { 传递数值信息 }
cdecl; { 指定调用协议 }
external 'Project2.dll';{ 指定过程来源 }{ 调用过程 }
procedure TForm1.Button1Click(Sender: TObject);
begin
DoTest(Application.Handle,
ADOConnection1,
'Call OK',
256);
end;end.