首先很抱歉的说,虽然论坛里有很多类似的问题,但我看了所有的解答,做了很多次试验,还是一头雾水。因为我是一个初学者,菜到对传Application的handle都不明白是什么意思,但现在工期赶得很紧,实在没时间从头学起。非常希望有哪位高人可以给我一个调试好的源程序,最好再能告诉我哪里有相关的参考。其实这个功能之前“部分”实现了,不过实现的只是调用一个几乎没什么的MDI子窗体。但是封装我的程序里的子窗体的时候就出现了内存错误,因为子窗体里用了很多ADO,GBGRID等控件,我想可能是和这些有关吧。希望大家能帮忙,等有时间了我一定会认真的来研究这部分内容的,谢谢!
CoInitialize(nil);
//ado控件使用
finally
CoUninitialize;
end;
我用过这个了,而且在试验的窗体中加了ADO组件,没报错,但当我用在自己的工程窗体上时,就报错了,,,自己的窗体上用了很多的ado,,,,是不是每个都要这样来使用?
try
CoInitialize(nil);
//ado控件使用
finally
CoUninitialize;
end;在初始化之后,可以进行多个ADO控件的操作吗?还是每个ado的操作都需要单独初始化?
----------------------------关闭---------
CoInitialize(nil);
try
if Assigned(AdoQuery) then
begin
AdoQuery.Active := false;
AdoQuery.Free;
end;
if Assigned(AdoConnection) then
begin
if AdoConnection.Connected then
AdoConnection.Connected := false;
AdoConnection.Free;
end;
finally
CoUninitialize;
end;
就是这个错误!
library QP_QueryRK;uses
ShareMem,
SysUtils,
Forms,
Classes,
Detail_frm in 'Detail_frm.pas' {frmDetail},
QueryRK_frm in 'QueryRK_frm.pas' {frmQueryRK};{$R *.res}
var
OldApp:TApplication;procedure Init_frmQueryRK(tmpApp:TApplication);stdcall;
begin
OldApp:=Application;
Application:=tmpApp;
end;procedure Load_frmQueryRK;stdcall
begin
TfrmQueryRK.Create(Application.MainForm);
end;procedure Final_frmQueryRK;stdcall
begin
Application := OldApp;
end;exports
Init_frmQueryRK,
Load_frmQueryRK,
Final_frmQueryRK;begin
end.
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Init_frmQueryRK(Application);
end;procedure TfrmMain.N_RKJLCXClick(Sender: TObject);//点击菜单调用dll窗体
begin
Load_frmQueryRK;
end;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Final_frmQueryRK;
end;
wewaa,我还想再问一下,我之前选择过带包,但发现再发布的时候需要非常多的包,project-> options-> packages-> build with runtime packages 这默认的包都是必须的吗?我有天晚上一个一个的试,错误报少哪个就把哪个添加进来,但后来发现实在太多了,,,,,,,,