主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.04.01;
下载:[xml.tar.bz2];

向下

MDI和DLL的问题 找到类似的分支


alexts   (2002-03-20 15:21) [0]

大家好 有这样一个问题:
有一个MDI应用程序和DLL,其中描述了形式。
这些表格不会显示出来。 怎么办



Alx2   (2002-03-20 15:43) [1]

在论坛中搜索。 这个问题在两周内第四次出现。



Alx2   (2002-03-20 15:49) [2]

抱歉,此问题的链接已超出活动范围:(



alexts   (2002-03-20 16:07) [3]

好吧,至少给哪里读。



MAxiMum   (2002-03-20 16:08) [4]

您是否将DLL的Form函数设为外部函数?
类型,函数(...):TMDIForm;
并获取到表单的链接。



Alx2   (2002-03-20 16:19) [5]

简而言之,他们这样做:
在DLL中,我们传递应用程序和屏幕的上下文。 在那之后,它几乎可以工作了。 :)
在这里,他匆忙速写:

DLL:

uses
sharemem,
SysUtils,
Classes,
Forms,
aUnit1 in "aUnit1.pas" {MDIForm1}; // Там сидит обычная форма
Var Save : TApplication;
{$R *.RES}
procedure ClearMdiApp; stdcall;
begin
if Save<>Nil then
Application := Save
end;

function createMDIChild(app : tApplication):Tform; stdcall;
begin
if Save = Nil
then Save := Application;
Application:=app;
Result := TMDIform1.create(app);
end;

exports createMDIChild, ClearMdiApp;

begin
Save := Nil;
end.


这是主要模块:

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
NewMDI1: TMenuItem;
procedure NewMDI1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
function createMDIChild(app : tapplication):tForm; stdcall; external "mdi.dll";
procedure ClearMdiApp; stdcall; external "mdi.dll";
implementation

{$R *.DFM}

procedure TForm1.NewMDI1Click(Sender: TObject);
begin
CreateMDIChild(Application).FormStyle:=fsMDIChild;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
ClearMdiApp;
end;

end.



alexts   (2002-03-20 17:20) [6]

甚至不出来。 主窗口消失了,就是这样..我将按照以下方式进行操作:
等等

library spr;
{$R *.res}
uses
Forms,
SysUtils,
Classes,DBTables,
u_add_group in "u_add_group.pas" {add_group},
dm_tov in "Dm_tov.pas" {DM_Tovar: TDataModule},
main_tovar in "main_tovar.pas" {f_sprtov},
u_add_food in "u_add_food.pas" {add_food},
add_param in "add_param.pas" {f_hartov};

function spr_foods(App:TApplication;Scr:TScreen;DB:TDataBase):TForm;
begin
Application:=App;
Screen:=Scr;
DM_Tovar:=TDM_Tovar.Create(app);
DM_Tovar.Database1:=DB;
f_sprtov:=Tf_sprtov.Create(App);
Result:=f_sprtov;
end;

exports
spr_foods;
begin
end.


DLL调用

LAssort:=loadlibrary(PChar(spr_menundll.AsString));
if LAssort<>0 then
begin
@MyProc:=GetProcAddress(LAssort,PChar(spr_menunproc.AsString));
if @MyProc <> nil
then MyProc(Application,Screen,Intro.Database1)
else ShowMessage("



Alx2   (2002-03-20 17:24) [7]

以防万一:在dll使用和主程序模块的使用中,将sharemem放在第一位。



alexts   (2002-03-20 17:38) [8]

都一样,一样。 主要形式消失了,但是在此之前,我称之为??????????的形式闪烁了



Alx2   (2002-03-20 17:39) [9]

真奇怪 某个地方出现故障....
我有一个例子,我写的完全可行。 尝试尝试一下。



Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.04.01;
下载:[xml.tar.bz2];

楼上





内存:0.57 MB
时间:0.034 c
14-280
暗号
2002-02-16 16:24
2002.04.01
平台SDK


7-337
异教徒
2001-12-28 11:52
2002.04.01
网卡号


1-146
Mikel13
2002-03-21 07:47
2002.04.01
图表


1-150
Sindyashkin DV
2002-03-21 07:13
2002.04.01
DWG支持


14-316
mr_X
2002-02-13 17:24
2002.04.01
谁将告诉谁将告诉你哪里可以获得资源文件,各种图标bmp-shki等。





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский