菜鸟做了一个最简单的dll文件,这个dll文件有个窗体,窗体上有两个edit框,怎么让这两个edit框的text等于调用这个dll的窗体的两个edit的text

  • 主题发起人 主题发起人 苦命的人
  • 开始时间 开始时间

苦命的人

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟做了一个最简单的dll文件,这个dll文件有个窗体,窗体上有两个edit框,怎么让这两个edit框的text等于调用这个dll的窗体的两个edit的text.详情请看。。。 (129分)<br />我的dll文件内容如下
uses
SysUtils,
Classes,
forms,
Unit1 in 'Unit1.pas' {fm_main};

{$R *.res}

function ShowMainForm(AHandle: THandle;ACaption:PChar;bCaption:PChar): Longint; stdcall;
begin
Application.Handle := AHandle;
fm_Main := Tfm_Main.Create(nil);
fm_Main.Edit1.Text:=ACaption;
fm_Main.Edit2.Text:=BCaption;
Result := Longint(fm_Main);
fm_Main.Show;
end;

exports
ShowMainForm;
end.

我的主调窗体如下:
var
Form1: TForm1;

implementation
function ShowMainForm(AHandle: THandle;ACaption:PChar;bCaption:PChar): Longint; stdcall; external 'about.dll';
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMainForm(application.handle,pchar(edit1.text),pchar(edit2.text));

end;


这个dll的fm_main窗体上有两个edit框,edit1和edit2
我的调用dll的程序有一个按钮,调用这个dll文件时,那个dll窗体的edit1的值为主调窗体
的edit1的值,那个dll窗体的edit2的值为主调窗体的edit2的值,我写的代码怎么不好使啊,高手帮忙啊!
 
声明改为//建议最好不用String类型,否则麻烦得很,呵呵
function ShowMainForm(AHandle: THandle;ACaption:PChar): Longint; stdcall;
调用改为
ShowMainForm(application.handle,PChar(TButton(Sender).Caption));
实现改为
function ShowMainForm(AHandle: THandle;ACaption:PChar): Longint; stdcall;
begin
Application.Handle := AHandle;
fm_Main := Tfm_Main.Create(nil);
fm_Main.Caption:=ACaption;//也可以改为fm_Main.Edit1.Text:=ACaption;
Result := Longint(fm_Main);
fm_Main.Show;
end;
 
//多加入一个参数
function ShowMainForm(AHandle: THandle;CapStr:String): Longint; stdcall;
begin
Application.Handle := AHandle;
fm_Main := Tfm_Main.Create(nil);
fm_main.Edit1.Text := CapStr;
Result := Longint(fm_Main);
fm_Main.Show;
end;

exports
ShowMainForm;
 
dll里面不能用string類型,只能用PChar,否則會得到不能預測的效果,切記
 
fm_Main := Tfm_Main.Create(nil);
还是改为 fm_Main := Tfm_Main.Create(Applicatoin); 好一些。
 
也不是不能用string类型的参数的,如果只是DELPHI调用有何不可:)
当然得记住加入sharemem
 
谢谢大家,我的问题解决了,不好意思,现在我想实现这样的一个功能:

这个dll的fm_main窗体上有两个edit框,edit1和edit2
我的调用dll的程序有一个按钮,调用这个dll文件时,那个dll窗体的edit1的值为主调窗体
的edit1的值,那个dll窗体的edit2的值为主调窗体的edit2的值,高手帮忙啊!
 
心心心心心心
心心心心心 心
心 心心心心心心
心 心 心
心 心 心 心
心 心 心 心
心 心 心 心
心 心 心 心
心 心 心心
心心 心 心
心心 心
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
666
import
I
后退
顶部