我有一个程序。主窗体为了漂亮和使用没有用mdiform所有的功能窗体都封装在dll中有一个标准的接口run。在调用的时候由主窗体传递dll中form所需要的参数。并且每个功能窗体打开后动态的创建一个窗口采单,但是如何才能在关闭窗体时同时也将对应的动态采单删除,自定义消息不能解决窗体名称参数问题。
附代码:《如有问题和错误请指出》
dll中的代码:
procedure Run(AppHandle:THandle;CS_PAR:Tcommservice);stdcall
var Form:TFrmTest;
pp:Pointer;
begin
Application.Handle:=AppHandle;
Form:=TFrmtest.Create(Application);
Form.cs:=cs_par;
Form.Show;
end;
exports
run;
begin
end.
//
//窗体中的代码
procedure TFrmDeskTop.RunModal(Path: string);
type
TRun=procedure(AppHandle:THandle;CS_PAR:Tcommservice);stdcall;
var
Run:Trun;
PrgH:Thandle;
begin
PrgH:=Loadlibrary(pChar(Path));
if PrgH<>0 then begin
@Run:=GetProcAddress(PrgH,'Run');
if @run<>nil then
begin
run(Application.Handle,DCS);
end;
end
else
FreeLibrary(PrgH);
end;
附代码:《如有问题和错误请指出》
dll中的代码:
procedure Run(AppHandle:THandle;CS_PAR:Tcommservice);stdcall
var Form:TFrmTest;
pp:Pointer;
begin
Application.Handle:=AppHandle;
Form:=TFrmtest.Create(Application);
Form.cs:=cs_par;
Form.Show;
end;
exports
run;
begin
end.
//
//窗体中的代码
procedure TFrmDeskTop.RunModal(Path: string);
type
TRun=procedure(AppHandle:THandle;CS_PAR:Tcommservice);stdcall;
var
Run:Trun;
PrgH:Thandle;
begin
PrgH:=Loadlibrary(pChar(Path));
if PrgH<>0 then begin
@Run:=GetProcAddress(PrgH,'Run');
if @run<>nil then
begin
run(Application.Handle,DCS);
end;
end
else
FreeLibrary(PrgH);
end;
解决方案 »
- dbgrideh实现Treeview,但编辑的记录无法保存
- 一个数据库异常处理问题?
- 关于TPanel组件动态生成TMemo组件...
- 谁将edit 框有对齐 检查输入有效性急
- 简单的SQL语句求解,急用!谢谢!』100分
- 系统设计数据结构
- 怎样定义一个record?(在线等)
- BDE如何存取Oracle中字符长度超过256的字段?
- 很菜的问题,如何打开一个无标题文本文件,再将数据写入这个文本文件中,写入完后并立刻打开这个无标题文件。
- 关于MEMO控件的问题!请大神指教!
- 怎样实现 Fast Report 的DBGrid表格打印?
- 提问:如何把一个通过6000端口访问的应用程序改成其他的端口?
删除不就很容易
begin
Action := caFree;
end;